Введение в схемы XSD с заметками (SQLXML 4.0)
Область применения: SQL Server База данных SQL Azure
Можно создавать представления схем 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 Reduced (XDR) в SQL Server 2000 (8.x). Схемы XDR с заметками в SQLXML 4.0 считаются устаревшими.
В контексте реляционной базы данных полезно сопоставить произвольную схему XSD с реляционным хранилищем. Один из способов достижения этого состоит в создании аннотированной схемы XSD. Схема XSD с заметками называется схемой сопоставления, которая содержит сведения, относящиеся к сопоставлению XML-данных с реляционным хранилищем. По сути, схема сопоставления является XML-представлением реляционных данных. Эти сопоставления позволяют получать реляционные данные в виде XML-документа.
Пространства имен для заметок
В схеме XSD заметки задаются с помощью схемы пространства имен urn:schemas-microsoft-com:mapping-schemas. Как показано в следующем примере, самый простой способ указать пространство имен — указать его в теге <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 в примере AdventureWorks2022
базы данных с помощью заметки 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 находятся на следующих веб-сайтах.
Часть 0 схемы XML: primer, рекомендация W3C (https://www.w3.org/TR/xmlschema-0/)
Часть 1 схемы XML: структуры, рекомендация W3C (https://www.w3.org/TR/xmlschema-1/)
Xml Schema Part 2:Datatypes, рекомендация W3C (https://www.w3.org/TR/xmlschema-2/)
Язык XML-пути (XPath) (https://www.w3.org/TR/xpath)
Преобразования XSL (XSLT) (https://www.w3.org/TR/xslt)
См. также
Основные понятия о безопасности схемы с заметками (SQLXML 4.0)
Схемы XDR с заметками (устарели в SQLXML 4.0)