Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Database
XPath dotazy mohou obsahovat jmenné prostory. Pokud jsou prvky schématu kvalifikované pro jmenný prostor (použijte cílový jmenný prostor), XPath musí specifikovat jmenný prostor XPath vůči tomuto schématu.
Protože zástupce znaku (*) není v Microsoft SQLXML 4.0 podporován, musíte dotaz XPath zadat pomocí prefixu jmenného prostoru. Pro vyřešení prefixu použijte vlastnost jmenných prostorů k určení vazby jmenného prostoru.
V následujícím příkladu dotaz XPath specifikuje jmenné prostory pomocí zástupce znaku (*) a funkcí localname() a namespace-uri() XPath. Tento dotaz XPath vrací všechny prvky, kde lokální název je Employee a URI jmenného prostoru urn:myschema:Contacts:
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
V SQLXML 4.0 specifikujte tento dotaz XPath pomocí prefixu jmenného prostoru. Příkladem je x:Contact, kde x je prefix jmenného prostoru. Uvažujme následující schéma XSD:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns:con="urn:myschema:Contacts"
targetNamespace="urn:myschema:Contacts">
<complexType name="ContactType">
<attribute name="CID" sql:field="ContactID" type="ID"/>
<attribute name="FName" sql:field="FirstName" type="string"/>
<attribute name="LName" sql:field="LastName"/>
</complexType>
<element name="Contact" type="con:ContactType" sql:relation="Person.Contact"/>
</schema>
Protože toto schéma definuje cílový jmenný prostor, dotaz XPath (například "Employee") proti tomuto schématu musí obsahovat tento jmenný prostor.
Následující ukázková aplikace v C# provádí dotaz XPath proti předchozímu schématu XSD (MySchema.xml). Pro vyřešení prefixu zadejte vazbu jmenného prostoru pomocí vlastnosti Namespaces objektu SqlXmlCommand.
Poznámka:
V kódu musíte v řetězci spojení uvést název instance SQL Serveru.
using System;
using Microsoft.Data.SqlXml;
using System.IO;
class Test
{
static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";
public static int testXPath()
{
//Stream strm;
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandText = "x:Contact[@CID='1']";
cmd.CommandType = SqlXmlCommandType.XPath;
cmd.RootTag = "ROOT";
cmd.Namespaces = "xmlns:x='urn:myschema:Contacts'";
cmd.SchemaPath = "MySchema.xml";
using (Stream strm = cmd.ExecuteStream()){
using (StreamReader sr = new StreamReader(strm)){
Console.WriteLine(sr.ReadToEnd());
}
}
return 0;
}
public static int Main(String[] args)
{
testXPath();
return 0;
}
}
Pro testování tohoto příkladu musíte mít na počítači nainstalovaný Microsoft .NET Framework.
Otestování aplikace
Uložte XSD schéma (MySchema.xml), které je v tomto příkladu uvedeno, do složky.
Uložit C# kód (DocSample.cs), který je uveden v tomto příkladu, do stejné složky, ve které je schéma uloženo. (Pokud soubory uložíte do jiné složky, budete muset upravit kód a zadat vhodnou cestu k adresáři pro mapovací schéma.)
Zkompilujte kód. Pro kompilaci kódu v příkazovém řádku použijte:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csTím vzniká spustitelný soubor (DocSample.exe).
V příkazovém řádku spusťte DocSample.exe.