Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Запросы к аннотированной схеме можно указать для получения данных из базы данных, указав запросы XPath в шаблоне для схемы XSD.
Элемент <sql:xpath-query> позволяет указать запрос XPath к xml-представлению, определенному аннотированной схемой. Аннотированная схема, для которой выполняется запрос XPath, определяется с помощью mapping-schema
атрибута <элемента sql:xpath-query> .
Шаблоны являются допустимыми XML-документами, содержащими один или несколько запросов. Запросы FOR XML и XPath возвращают фрагмент документа. Шаблоны действуют как контейнеры для фрагментов документа; Таким образом, шаблоны предоставляют способ указания одного элемента верхнего уровня.
В примерах в этом разделе используются шаблоны для указания запроса XPath к аннотированной схеме для получения данных из базы данных.
Например, рассмотрим эту аннотированную схему:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person.Contact" >
<xsd:complexType>
<xsd:attribute name="ContactID" type="xsd:string" />
<xsd:attribute name="FirstName" type="xsd:string" />
<xsd:attribute name="LastName" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Для иллюстрации эта схема XSD хранится в файле с именем Schema2.xml. Затем можно получить запрос XPath к аннотированной схеме, указанной в следующем файле шаблона (Schema2T.xml):
<sql:xpath-query
xmlns:sql="urn:schemas-microsoft-com:xmlsql"
>
Person.Contact[@ContactID="1"]
</sql:xpath-query>
Затем можно создать и использовать скрипт тестирования SQLXML 4.0 (Sqlxml4test.vbs) для выполнения запроса в рамках файла шаблона. Дополнительные сведения см. в разделе "Аннотированные схемы XDR" (устаревшие в SQLXML 4.0).
Использование встроенных схем сопоставления
Аннотированная схема может быть включена непосредственно в шаблон, а затем запрос XPath можно указать в шаблоне для встроенной схемы. Шаблон также может быть диаграммой обновления.
Шаблон может включать несколько встроенных схем. Чтобы использовать встроенную схему, включенную в шаблон, укажите атрибут идентификатора с уникальным значением в <элементе xsd:schema> , а затем используйте #idvalue для ссылки на встроенную схему. Атрибут идентификатора идентичен поведению с sql:id ({urn:schemas-microsoft-com:xml-sql}id), используемым в схемах XDR.
Например, следующий шаблон задает две встроенные аннотированные схемы:
<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
id='InLineSchema1' sql:is-mapping-schema='1'>
<xsd:element name='Employees' ms:relation='HumanResources.Employee'>
<xsd:complexType>
<xsd:attribute name='LoginID'
type='xsd:string'/>
<xsd:attribute name='Title'
type='xsd:string'/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
id='InLineSchema2' sql:is-mapping-schema='1'>
<xsd:element name='Contacts' ms:relation='Person.Contact'>
<xsd:complexType>
<xsd:attribute name='ContactID'
type='xsd:string' />
<xsd:attribute name='FirstName'
type='xsd:string' />
<xsd:attribute name='LastName'
type='xsd:string' />
</xsd:complexType>
</xsd:element>
</xsd:schema>
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'
mapping-schema='#InLineSchema1'>
/Employees[@LoginID='adventure-works\guy1']
</sql:xpath-query>
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'
mapping-schema='#InLineSchema2'>
/Contacts[@ContactID='1']
</sql:xpath-query>
</ROOT>
Шаблон также задает два запроса XPath. Каждый из <элементов xpath-query> однозначно идентифицирует схему mapping-schema
сопоставления, указав атрибут.
При указании встроенной схемы в шаблоне sql:is-mapping-schema
необходимо также указать заметку на <элементе xsd:schema> . Принимает sql:is-mapping-schema
логическое значение (0=false, 1=true). Встроенная схема с sql:is-mapping-schema="1" обрабатывается как встроенная аннотированная схема и не возвращается в XML-документе.
Заметка sql:is-mapping-schema
принадлежит пространству urn:schemas-microsoft-com:xml-sql
имен шаблона.
Чтобы проверить этот пример, сохраните шаблон (InlineSchemaTemplate.xml) в локальном каталоге, а затем создайте и используйте скрипт тестирования SQLXML 4.0 (Sqlxml4test.vbs) для выполнения шаблона. Дополнительные сведения см. в разделе "Использование ADO для выполнения запросов SQLXML 4.0".
Помимо указания mapping-schema
атрибута в элементе <sql:xpath-query> в шаблоне (при наличии запроса XPath) или <элемента updg:sync> в диаграмме обновления можно выполнить следующее:
mapping-schema
Укажите атрибут в корневом<> элементе (глобальном объявлении) в шаблоне. Затем эта схема сопоставления становится схемой по умолчанию, которая будет использоваться всеми узлами XPath и updategram, у которых нет явнойmapping-schema
заметки.mapping schema
Укажите атрибут с помощью объекта ADOCommand
.
Атрибут, указанный в элементе <xpath-query> или <updg:sync>, имеет самый высокий приоритет. Объект mapping-schema
ADO Command
имеет наименьший приоритет.
Обратите внимание, что если вы указываете запрос XPath в шаблоне и не указываете схему сопоставления, для которой выполняется запрос XPath, запрос XPath рассматривается как запрос типа dbobject . Например, рассмотрим этот шаблон:
<sql:xpath-query
xmlns:sql="urn:schemas-microsoft-com:xmlsql">
Production.ProductPhoto[@ProductPhotoID='100']/@LargePhoto
</sql:xpath-query>
Шаблон задает запрос XPath, но не указывает схему сопоставления. Таким образом, этот запрос рассматривается как запрос типа dbobject , в котором Production.ProductPhoto — это имя таблицы, а @ProductPhotoID="100" — это предикат, который находит фотографию продукта с идентификатором 100. @LargePhoto — это столбец, из которого требуется получить значение.