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


Настраиваемые сопоставления XSD с таблицами и столбцами (SQLXML)

Применимо к:База данных SQL ServerAzure SQL

При использовании схемы XSD для представления реляционных баз данных в виде XML элементы и атрибуты схемы должны быть сопоставлены с таблицами и столбцами базы данных. Строки таблицы или представления базы данных будут сопоставлены с элементами в XML-документе. Значения столбцов базы данных сопоставляются с атрибутами и элементами.

При запросах XPath к схеме XSD c заметками данные для элементов и атрибутов схемы берутся из таблиц и столбцов, которым они сопоставлены. Для получения единичного значения из базы данных сопоставление, заданное схемой XSD, должно содержать спецификации и связей, и полей. Если имя элемента или атрибута отличается от имени таблицы или представления или столбца, с которым они сопоставляются, заметки sql:relation и sql:field используются для указания сопоставления между элементом или атрибутом в XML-документе и таблицей (представлением) или столбцом в базе данных.

sql-relation

Заметка sql:relation добавляется для сопоставления узла XML в схеме XSD с таблицей базы данных. Имя таблицы (представления) указывается как значение заметки sql:relation .

Если для элемента задано значение sql:relation, область этой заметки применяется ко всем атрибутам и дочерним элементам, описанным в определении сложного типа этого элемента, что позволяет быстро создавать заметки.

Заметка sql:relation также полезна, если идентификаторы, допустимые в Microsoft SQL Server, недопустимы в XML. Например, "Сведения о заказе" — это допустимое имя таблицы в SQL Server, но не в XML. В таких случаях заметку sql:relation можно использовать для указания сопоставления, например:

<xsd:element name="OD" sql:relation="[Order Details]">  

sql-field

Заметка sql-field сопоставляет элемент или атрибут со столбцом базы данных. Заметка sql:field добавляется для сопоставления узла XML в схеме со столбцом базы данных. Невозможно указать sql:field в пустом элементе содержимого.

Примеры

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

A. Задание заметок sql:relation и sql:field

В этом примере схема XSD состоит из <элемента Contact> сложного типа с дочерними <элементами FName> и <LName> и атрибутом ContactID .

Заметка sql:relation сопоставляет <элемент Contact> с таблицей Person.Contact в базе данных AdventureWorks. Заметка sql:field сопоставляет <элемент FName> со столбцом FirstName, а <элемент LName> — со столбцом LastName.

Для атрибута ContactID заметка не указана. Поэтому атрибут по умолчанию сопоставляется со столбцом с тем же именем.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Contact" sql:relation="Person.Contact" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="FName"  
                     sql:field="FirstName"   
                     type="xsd:string" />   
        <xsd:element name="LName"    
                     sql:field="LastName"    
                     type="xsd:string" />  
     </xsd:sequence>  
        <xsd:attribute name="ContactID"   
                       type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Проверка образца запроса XPath к схеме
  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл под именем MySchema-annotated.xml.

  2. Скопируйте приведенный ниже шаблон и вставьте его в текстовый файл. Сохраните файл под именем MySchema-annotatedT.xml в том же каталоге, где был сохранен файл MySchema-annotated.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="MySchema-annotated.xml">  
        /Contact  
      </sql:xpath-query>  
    </ROOT>  
    

    Путь к каталогу схемы сопоставления (файл MySchema-annotated.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:

    mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"  
    
  3. Создайте и запустите тестовый скрипт SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.

    Дополнительные сведения см. в статье Использование ADO для выполнения запросов SQLXML.

Частичный результирующий набор:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
 <Contact ContactID="1">   
    <FName>Gustavo</FName>   
    <LName>Achong</LName>   
 </Contact>   
  .....  
</ROOT>