Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server База данных SQL Azure
В запросы XPath могут быть включены пространства имен. Если имена элементов схемы уточнены именем пространства имен (используйте целевое пространство имен), оно должно быть указано в запросах XPath к этой схеме.
Так как подстановочный знак (*) не поддерживается в Microsoft SQLXML 4.0, необходимо указать запрос XPath с помощью префикса пространства имен. Чтобы устранить префикс, используйте свойство пространства имен для указания привязки пространства имен.
В следующем примере запрос XPath задает пространства имен с помощью подстановочных знаков (*) и функций XPath local-name() и uri(). Этот запрос XPath возвращает все элементы, в которых локальное имя — Employee , а URI пространства имен — urn:myschema:Contacts:
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
В SQLXML 4.0 этот запрос XPath необходимо указывать с префиксом пространства имен. Примером является x:Contact, где x — префикс пространства имен. Рассмотрим следующую схему 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>
Поскольку эта схема задает целевое пространство имен, запрос XPath к этой схеме (например, «Employee») должен содержать пространство имен.
Следующие образец приложения на C# исполняет запрос XPath к предыдущей схеме XSD (MySchema.xml). Чтобы устранить префикс, укажите привязку пространства имен с помощью свойства пространства имен объекта SqlXmlCommand.
Примечание.
В коде необходимо указать имя экземпляра SQL Server в строка подключения.
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;
}
}
Чтобы протестировать этот пример, на компьютере должна быть установлена платформа .NET Framework Майкрософт.
Тестирование приложения
Сохраните в папке приведенную в этом примере схему XSD (MySchema.xml).
Сохраните код на языке C# (файл DocSample.cs), приведенный в этом разделе, в той папке, где сохранена схема (если сохранить файлы в разных папках, то придется изменить код, указав путь к каталогу, в котором находится схема сопоставления).
Скомпилируйте код. Чтобы скомпилировать код из командной строки, введите следующую команду.
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csБудет создан исполняемый файл (DocSample.exe).
Запустите файл DocSample.exe из командной строки.