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


Общие сведения о схемах 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, которые возвращают наборы строк.

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

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