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


Введение в схемы 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 поддерживает заметки, представленные с заметками XML-Data сокращенным языком схемы (XDR) в SQL Server 2000. Схемы XDR с заметками в SQLXML 4.0 считаются устаревшими.

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

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

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

<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>  

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

<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 чувствительные к регистру параметры сортировки. Дополнительные сведения см. в статье Collation and Unicode Support.

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

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

См. также:

Основные понятия о безопасности схемы с заметками (SQLXML 4.0)
Схемы XDR с заметками (устарели в SQLXML 4.0)