Wykonywanie kwerend XPath z przestrzeniami nazw (SQLXML zarządzane klasy)
Kwerendy XPath należą przestrzenie nazw.Jeśli elementy schematu są kwalifikowane nazw (za pomocą miejsce docelowe nazw), kwerend XPath względem schematu należy określić obszar nazw.
Symbol wieloznaczny (*) nie jest obsługiwane na Microsoft SQLXML 4.0, należy określić kwerendę XPath przy użyciu prefiks obszaru nazw.Aby rozwiązać prefiks, użyj namespaces właściwość, aby określić obszar nazw powiązanie.
W poniższym przykładzie kwerenda XPath określa obszary nazw przy użyciu symbol wieloznaczny (*) i local-name() i namespace-uri() funkcje XPath.Ta kwerenda XPath zwraca wszystkie elementy, w których jest lokalną nazwą Employee i obszaru nazw URI jest urn:myschema:Contacts:
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
SQLXML 4.0 określić tę kwerendę XPath prefiks obszaru nazw.Przykładem jest x:Person, gdzie x jest prefiks obszaru nazw.Rozważmy następujące schematu 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:Contact">
<complexType name="ContactType">
<attribute name="CID" sql:field="BusinessEntityID" type="ID"/>
<attribute name="FName" sql:field="FirstName" type="string"/>
<attribute name="LName" sql:field="LastName"/>
</complexType>
<element name="Person" type="con:PersonType" sql:relation="Person.Person"/>
</schema>
Ponieważ ten schemat definiuje miejsce docelowe nazw kwerendę XPath (takie jak "pracownik") wobec tego schematu musi zawierać obszar nazw.
Następująca aplikacja przykładowa C# wykonuje kwerendę XPath przeciwko poprzedniego schematu XSD (MySchema.xml).Aby rozwiązać prefiks, określić obszar nazw powiązanie za pomocą Namespaces Właściwość SqlXmlCommand obiektu.
Ostrzeżenie
W kodzie, musisz podać nazwę wystąpienie SQL Server w połączeniu z ciąg.
using System;
using Microsoft.Data.SqlXml;
using System.IO;
class Test
{
static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks2008R2;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:ContactsContact'";
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;
}
}
Aby przetestować aplikację
Upewnij się, że Microsoft .NET Framework jest zainstalowana na komputerze.Aby przetestować ten przykład jest wymagane.
Zapisywanie schematu XSD (MySchema.xml), który jest dostarczany w tym przykładzie w folderze.
Zapisz kod C# (DocSample.cs) dostarczonego w tym przykładzie w tym samym folderze, w którym przechowywany jest schemat.(Jeśli pliki są przechowywane w innym folderze, będzie trzeba edytować kod i określ ścieżka katalogu właściwe dla mapowania schematu.)
Skompiluj kod.Aby skompilować kod w wiersz polecenia, należy użyć zapisu:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csTworzy plik wykonywalny (DocSample.exe).
W wiersz polecenia wykonać DocSample.exe.