Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
gäller för:SQL Server
Azure SQL Database
XPath-frågor kan inkludera namnrymder. Om schemaelementen är namespace-kvalificerade (använd ett målnamnrymd) måste XPath-frågorna mot schemat specificera namespace.
Eftersom jokersymbolen (*) inte stöds i Microsoft SQLXML 4.0 måste du specificera XPath-frågan genom att använda ett namnrymdsprefix. För att lösa prefixet, använd egenskapen namespaces för att specificera namespace-bindningen.
I följande exempel specificerar XPath-frågan namnrymder genom att använda jokersymbolen (*) samt funktionerna local-name() och namespace-uri() XPath. Denna XPath-fråga returnerar alla element där det lokala namnet är Employee och namnrymdens URI är urn:myschema:Contacts:
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
I SQLXML 4.0, ange denna XPath-fråga med ett namnrymdsprefix. Ett exempel är x:Kontakt, där x är namnrymdsprefixet. Betrakta följande XSD-schema:
<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>
Eftersom detta schema definierar målnamnrymden måste en XPath-fråga (såsom "Anställd") mot detta schema inkludera namnrymden.
Följande C#-exempelapplikation kör en XPath-fråga mot det föregående XSD-schemat (MySchema.xml). För att lösa prefixet, specificera namnrymdsbindningen genom att använda egenskapen Namespaces i objektet SqlXmlCommand.
Anmärkning
I koden måste du ange namnet på instansen av SQL Server i anslutningssträngen.
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;
}
}
För att testa detta exempel måste du ha Microsoft .NET Framework installerat på din dator.
Testa programmet
Spara XSD-schemat (MySchema.xml) som ges i detta exempel i en mapp.
Spara C#-koden (DocSample.cs) som ges i detta exempel i samma mapp där schemat lagras. (Om du lagrar filerna i en annan mapp måste du redigera koden och ange lämplig katalogsökväg för mappningsschemat.)
Komplisera koden. För att kompilera koden i kommandoprompten, använd:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csDetta skapar en exekverbar fil (DocSample.exe).
Vid kommandoprompten, utför DocSample.exe.