Сопоставление элементов и атрибутов XSD с таблицами и столбцами по умолчанию (SQLXML 4.0)
По умолчанию элемент сложного типа в аннотированной схеме XSD сопоставляется с одноименной таблицей (представлением) в заданной базе данных, а элемент или атрибут простого типа сопоставляется с одноименным столбцом этой таблицы.
Примеры
Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе Требования к запуску примеров SQLXML.
A. Указание сопоставления по умолчанию
В этом примере в схеме XSD не задано никаких заметок. Элемент <Person.Contact> имеет сложный тип и поэтому по умолчанию сопоставляется с таблицей Person.Contact в базе данных AdventureWorks. Все атрибуты (ContactID, FirstName, LastName) элемента <Person.Contact> имеют простой тип, поэтому по умолчанию сопоставляются с одноименными столбцами таблицы Person.Contact.
<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>
Проверка образца запроса XPath к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем MySchema.xml.
Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем MySchemaT.xml в том же каталоге, где был сохранен файл MySchema.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema.xml"> /Person.Contact </sql:xpath-query></ROOT>Путь к каталогу для схемы сопоставления (MySchema.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\SqlXmlTest\MySchema.xml"Создайте и запустите тестовый сценарий SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.
Частичный результирующий набор:
<?xml version="1.0" encoding="UTF-8" ?><ROOT> <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/> <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel"/> ...</ROOT>
B. Сопоставление XML-элемента со столбцом базы данных
Так как не использовано ни одной заметки, в этом примере также имеет место сопоставление по умолчанию. Элемент <Person.Contact> имеет сложный тип, поэтому сопоставляется с одноименной таблицей в базе данных. Элементы <FirstName> и <LastName>, а также атрибут EmployeeID имеют простой тип и, следовательно, сопоставляются с одноименными столбцами. Единственная разница между этим и предыдущим примером заключается в том, что элементы используются для сопоставления полей FirstName и LastName.
<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:sequence> <xsd:element name="FirstName" type="xsd:string" /> <xsd:element name="LastName" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="ContactID" type="xsd:integer" /> </xsd:complexType> </xsd:element></xsd:schema>
Проверка образца запроса XPath к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем MySchemaElements.xml.
Создайте следующий шаблон (MySchemaElementsT.xml) и сохраните его в том же каталоге, что и на предыдущем шаге.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchemaElements.xml"> /Person.Contact </sql:xpath-query></ROOT>Путь к каталогу для схемы сопоставления задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\SqlXmlTest\MySchemaElements.xml"Создайте и запустите тестовый сценарий SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.
Частичный результирующий набор:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <Person.Contact ContactID="1"> <FirstName>Gustavo</FirstName> <LastName>Achong</LastName> </Person.Contact> ...</ROOT>
C. Сопоставление XML-элемента со столбцом XML-типа
Так как не использовано ни одной заметки, в этом примере также имеет место сопоставление по умолчанию. Элемент <Production.ProductModel> имеет сложный тип и сопоставляется с одноименной таблицей в базе данных. Атрибут ProductModelID имеет простой тип, поэтому сопоставляется с одноименными столбцами. Единственная разница между этим и предыдущим примером заключается в том, что элемент <Instructions> сопоставляется со столбцом, имеющим тип данных xml, используя тип xsd:anyType.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema"> <xsd:element name="Production.ProductModel"> <xsd:complexType> <xsd:sequence> <xsd:element name="Instructions" type="xsd:anyType" /> </xsd:sequence> <xsd:attribute name="ProductModelID" type="xsd:integer" /> </xsd:complexType> </xsd:element></xsd:schema>
В SQL Server 2005 появился тип данных xml.
Проверка образца запроса XPath к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем MySchemaXmlAnyElements.xml.
Создайте следующий шаблон (MySchemaXmlAnyElementsT.xml) и сохраните его в том же каталоге, что и на предыдущем шаге.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchemaXmlAnyElements.xml"> /Production.ProductModel[@ProductModelID=7] </sql:xpath-query></ROOT>Путь к каталогу для схемы сопоставления задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\SqlXmlTest\MySchemaXmlAnyElements.xml"Создайте и запустите тестовый сценарий SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.
Частичный результирующий набор:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <Production.ProductModel ProductModelID="7"> <Instructions> <root xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions">... </root> <Instructions> </Production.ProductModel></ROOT>
См. также