Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.