Поделиться через


Сопоставление элементов XSD и атрибутов по умолчанию с таблицами и столбцами (SQLXML 4.0)

По умолчанию элемент сложного типа в аннотированной схеме XSD сопоставляется с таблицей (представлением) с тем же именем в указанной базе данных, а элемент или атрибут простого типа сопоставляется с столбцом с таким же именем в таблице.

Примеры

Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе "Требования к выполнению примеров SQLXML".

А. Указание сопоставления по умолчанию

В этом примере в схеме 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>  

В. Сопоставление 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>  

С. Сопоставление XML-элемента с столбцом типа данных XML

В этом примере сопоставление по умолчанию также происходит, так как заметки не используются. Элемент <Production.ProductModel> имеет сложный тип и сопоставляется с таблицей с тем же именем в базе данных. Атрибут ProductModelID имеет простой тип, поэтому сопоставляется со столбцами с одинаковыми именами. Единственное различие между этим и предыдущими примерами заключается в том, что <элемент "Инструкции> " сопоставляется с столбцом, использующим 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>  

Тип xml данных появился в SQL Server 2005.

Проверка образца запроса 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="http:  
//schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstru  
ctions">  
...  
      </root>  
    <Instructions>  
  </Production.ProductModel>  
</ROOT>  

См. также

Вопросы безопасности аннотированных схем (SQLXML 4.0)
XML-данные (SQL Server)
Поддержка типов данных XML в SQLXML 4.0