Сопоставление элементов и атрибутов 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 к схеме

  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем MySchema.xml.

  2. Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем 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"
    
  3. Создайте и запустите тестовый сценарий 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 к схеме

  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем MySchemaElements.xml.

  2. Создайте следующий шаблон (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"
    
  3. Создайте и запустите тестовый сценарий 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 к схеме

  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем MySchemaXmlAnyElements.xml.

  2. Создайте следующий шаблон (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"
    
  3. Создайте и запустите тестовый сценарий 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>