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


Введение в схемы XSD с заметками (SQLXML 4.0)

Можно создать представления XML реляционных данных при помощи языка XSD. Затем можно выполнять запросы к этим представлениям при помощи языка XPath (XML Path). Это похоже на создание представлений с помощью инструкции CREATE VIEW с последующим указанием запросов SQL к представлению.

XML-схема описывает структуру XML-документа, а также описывает различные ограничения на данные, содержащиеся в документе. При задании запросов XPath по схеме структура возвращаемого XML-документа определяется согласно схеме, по которой выполняется запрос XPath.

В схеме XSD элемент <xsd:schema> заключает в себе схему; все объявления элементов должны содержаться в элементе <xsd:schema>. Можно описать атрибуты, определяющие пространство имен, в котором находится схема, и пространства имен, используемые в схеме как свойства элемента <xsd:schema>.

Правильная схема XSD должна содержать элемент <xsd:schema>, определенный следующим образом:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<!-- additional schema definitions here -->
</xsd:schema>

Элемент <xsd:schema> является производным от спецификации пространства имен схемы XML, расположенный на http://www.w3.org/2001/XMLSchema.

Заметки к схеме XSD

Можно использовать схему XSD с заметками, описывающими сопоставление с базой данных, запросом к базе данных, и возвращаемыми в форме XML-документа. Заметки служат для сопоставления схемы XSD с таблицами и столбцами базы данных. Можно указывать запросы XPath к представлениям XML, созданным на основе схемы XSD для запроса к базе данных и получения результатов в виде XML.

ПримечаниеПримечание

В Microsoft SQLXML 4.0 язык схем XSD поддерживает заметки, введенные в языке схем XDR в SQL Server 2000. Схемы XDR с заметками устарели в SQLXML 4,0.

В контексте реляционной базы данных полезно сопоставить произвольную схему XSD с реляционным хранилищем. Один из способов этого добиться — создание аннотированной схемы XSD. Схема XSD с аннотациями называется также схемой сопоставления, она предоставляет информацию о сопоставлении данных XML с реляционным хранилищем. По сути, схема сопоставления является XML-представлением реляционных данных. Эти сопоставления позволяют получать реляционные данные в виде XML-документа.

Пространства имен для заметок

В схеме XSD, заметки описаны при помощи пространства имен urn:schemas-microsoft-com:mapping-schema. Как показано в следующем примере, наиболее простой способ задать пространство имен — определить его внутри тега <xsd:schema> tag.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
...
</xsd:schema>

Префикс пространства имен может быть произвольным. В данной документации префикс sql используется для задания пространства имен аннотаций и для того, чтобы отличить аннотации данного пространства имен от аннотаций других пространств имен.

Пример схемы XSD с заметками

В следующем примере схема XSD состоит из элемента <Person.Contact>. Элемент <Employee> содержит атрибут ContactID и дочерние элементы <FirstName> и <LastName>:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Contact" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"
                       type="xsd:string" />
         <xsd:element name="LName"
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="ConID" type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

К XDR-схеме добавляются аннотации, чтобы сопоставить ее элементы и атрибуты именам таблиц и столбцов базы данных:

<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="ConID"
                        sql:field="ContactID"
                        type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

В схеме сопоставления элемент <Contact> сопоставлен таблице Person.Contact в той же базе данных AdventureWorks при помощи заметки sql:relation. Атрибуты ConID, FName и LName сопоставлены столбцам ContactID, FirstName и LastName таблицы Person.Contact с помощью аннотаций sql:field.

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

ПримечаниеПримечание

В схеме сопоставления чувствительность к регистру для указанных реляционных значений (таких как имя таблицы или столбца) зависит от того, использует ли SQL Server чувствительные к регистру параметры сортировки. Дополнительные сведения см. в разделе Использование параметров сортировки SQL Server.

Другие ресурсы

Дополнительные сведения о языке XSD, языке XPath и преобразованиях XSLT находятся на следующих веб-узлах.