Общие сведения о схемах XDR с заметками (является устаревшим в SQLXML 4.0)
![]() |
---|
Этот раздел включен в документацию в качестве справочника по приложениям прежних версий. Дальнейшая разработка этой функции проводиться не будет. Рекомендуется избегать использования данной функции в новых разработках. Вместо этого для создания XML-представлений пользуйтесь схемами XSD с заметками. Дополнительные сведения см. в разделе Введение в схемы XSD с заметками (SQLXML 4.0). Можно преобразовать существующие схемы XDR с заметками в схемы XSD. Дополнительные сведения см. в разделе Преобразование схем XDR с заметками в эквивалентные схемы XSD (SQLXML 4.0). |
Можно создавать XML-представления реляционных данных с помощью схем XDR (XML-Data Reduced). Затем можно выполнять запросы XPath к этим представлениям. Это похоже на создание представлений с помощью инструкции CREATE VIEW с последующим получением данных из них с помощью запросов SQL.
Схема XML описывает структуру XML-документа, а также различные ограничения на данные, содержащиеся в документе. При задании запросов XPath по схеме структура возвращаемого XML-документа определяется согласно схеме, по которой выполняется запрос XPath.
В Microsoft SQL Server 2000 язык XML-Data Reduced (XDR) был первоначально введен для создания схем XML. В то время язык XDR был гибким и преодолевал некоторые ограничения определений типа документа (Document Type Definitions, DTD), которые также могут использоваться для описания структур XML-документов. В отличие от определений DTD, схемы XDR описывают структуру XML-документа с помощью того же синтаксиса, что используется в самом XML-документе. Кроме того, все данные в определении DTD представляют собой символьные данные. Схемы на языке XDR позволяют задавать тип данных элемента или атрибута.
В схеме XDR элемент <Schema> заключает в себе всю схему. Атрибуты, описывающие имя схемы и пространства имен, в которых она находится, можно задавать как свойства элемента <Schema>. В языке XDR все декларации элементов должны содержаться внутри элемента <Schema>.
Минимальная схема XDR выглядит следующим образом.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data">
...
</Schema>
Элемент <Schema> является производным от пространства имен xml-data (urn:schemas-microsoft-com:xml-data).
![]() |
---|
В этом разделе предполагается, что вы знакомы с языком XML-Data. |
Заметки к схеме XDR
Можно использовать схему XDR с заметками, которые задают сопоставление с базой данных, чтобы создавать запросы к базе данных и возвращать результаты в виде XML-документа. Первые заметки, которые можно было использовать для сопоставления схемы XDR с таблицами и столбцами базы данных SQL, появились в версии SQL Server 2000. Можно создавать запросы XPath к представлениям XML, созданным на основе схемы XDR для создания запросов к базе данных и получения результатов в виде XML.
Альтернативой является более сложный процесс написания SQL-запроса, использующего режим FOR XML EXPLICIT для описания структуры XML-документа как части запроса. Однако чтобы обойти большую часть ограничений запросов XPath к схемам сопоставления, используются запросы SQL в режиме FOR XML EXPLICIT для возвращения результатов в виде XML-документа.
При наличии публичных схем XDR (например, схем Microsoft BizTalk), можно прибегнуть к любому из двух следующих способов.
Написать запрос в режиме FOR XML EXPLICIT, чтобы возвращаемые данные имели допустимый формат согласно схеме XDR; однако, написание запросов FOR XML EXPLICIT может быть довольно трудоемким.
Создать частную копию схемы XDR. Затем добавить к этой частной копии заметки, таким образом создавая схему сопоставления. Можно задать запросы XPath к схеме сопоставления. В результате запрос создаст не что иное как данные в пространстве имен публичной схемы. Создание аннотированных схем и задание запросов XPath к ним — гораздо более простой процесс, чем написание сложных запросов FOR XML EXPLICIT. На следующей иллюстрации показан этот процесс.
Схема сопоставления
В контексте реляционной базы данных полезно сопоставить произвольную схему XDR с реляционным хранилищем. Один из способов этого добиться — создание аннотированной схемы XDR. Схема XDR с заметками называется также mapping schema, предоставляющая информацию о сопоставлении XML-данных с реляционным хранилищем. По сути, схема сопоставления является XML-представлением реляционных данных. Эти сопоставления позволяют получать реляционные данные в виде XML-документа.
В версии SQL Server 2000 появились некоторые заметки, которые можно использовать в схеме XDR для сопоставления элементов и атрибутов с таблицами и столбцами базы данных. С помощью XPath (XML Path) можно создавать запросы к схемам сопоставления (XML-представлениям). Схема сопоставления описывает структуру результирующего документа.
Пространства имен для заметок
В схеме XDR заметки задаются с помощью следующего пространства имен: urn:schemas-microsoft-com:xml-sql.
В следующем примере показано, что наиболее простой способ задать пространство имен — определить его внутри тега <Schema>. Для заметок должно быть указано пространство имен urn:schemas-microsoft-com:xml-sql.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
>
...........
</Schema>
Префикс пространства имен может быть произвольным. В данной документации префикс sql используется для задания пространства имен заметок и для отличия заметок данного пространства имен от заметок других пространств имен.
Пространство имен для типов данных
Схемы XDR позволяют задавать тип данных элемента или атрибута. Типы данных определяются с помощью пространства имен urn:schemas-microsoft-com:datatypes.
Ниже приведена минимально возможная схема XDR с декларациями пространств имен.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
...
</Schema>
Префикс пространства имен может быть произвольным. В данной документации префикс dt используется для задания пространства имен типов данных и для отличия заметок данного пространства имен от заметок других пространств имен.
Элемент <Schema> является производным от пространства имен xml-dataurn:schemas-microsoft-com:xml-data.
Пример схемы XDR
Пример демонстрирует добавление заметок к схеме XDR. Эта схема XDR состоит из элемента <Contacts> и атрибутов CID, FName и LName.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Contacts" >
<AttributeType name="CID" />
<AttributeType name="FName" />
<AttributeType name="LName" />
<attribute type="CID" />
<attribute type="FName" />
<attribute type="LName" />
</ElementType>
</Schema>
Теперь к схеме XDR добавляются заметки, чтобы сопоставить ее элементы и атрибуты с именами таблиц и столбцов SQL в образце базы данных База данных AdventureWorks2008R2. Ниже показана аннотированная схема XDR.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Contacts" sql:relation="Person.Person" >
<AttributeType name="CID" />
<AttributeType name="FName" />
<AttributeType name="LName" />
<attribute type="CID" sql:field="BusinessEntityID" />
<attribute type="FName" sql:field="FirstName" />
<attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>
В схеме сопоставления элемент <Contacts> сопоставлен с таблицей Person.Personс помощью заметки sql:relation. Атрибуты CID, FName и LName сопоставлены со столбцами BusinessEntityID, FirstName и LastName таблицы Person.Person с помощью заметок sql:field.
Эта схема XDR с заметками создает XML-представление реляционных данных. Затем можно выполнять запросы XPath (XML Path) к этим XML-представлениям. Такой запрос возвращает XML-документ, в отличие от запросов SQL, которые возвращают наборы строк.
![]() |
---|
В схеме сопоставления заданные реляционные значения (например, имена таблиц и столбцов) чувствительны к регистру. |