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


Создание постоянных элементов с помощью sql:is-constant (схема XDR)

Важное примечаниеВажно!

Этот раздел включен в документацию в качестве справочника по приложениям прежних версий. Дальнейшая разработка этой функции проводиться не будет. Рекомендуется избегать использования данной функции в новых разработках. Вместо этого для создания XML-представлений пользуйтесь схемами XSD с заметками. Дополнительные сведения см. в разделе Введение в схемы XSD с заметками (SQLXML 4.0). Можно преобразовать существующие схемы XDR с заметками в схемы XSD. Дополнительные сведения см. в разделе Преобразование схем XDR с заметками в эквивалентные схемы XSD (SQLXML 4.0).

В результате сопоставления по умолчанию каждый элемент и атрибут в схеме XDR будет сопоставлен с таблицей и столбцом в базе данных. В некоторых случаях может потребоваться создать в схеме XDR элемент, который не будет соответствовать ни одной таблице или столбцу базы данных, но будет отображаться в XML-документе. Такие элементы называют постоянными. Чтобы создать постоянный элемент, укажите заметку sql:is-constant. sql:is-constant принимает логическое значение (0 = FALSE, 1 = TRUE).

Данная заметка указывается в <ElementType>, который не соответствует ни одной таблице базы данных, что делает элемент постоянным. Заметка sql:is-constant может использоваться для следующих задач.

  • Добавление элемента верхнего уровня в XML-документ. XML требует один элемент верхнего уровня (элемент <root>) для документа.

  • Создание элементов контейнера, например, элемента <Orders>, который переносит все заказы.

Примеры

Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе Требования к запуску примеров SQLXML.

А. Укажите заметку sql:is-constant для добавления элемента контейнера

В данной схеме XDR с заметкой <OrderList> определяется в виде постоянного элемента, содержащего все вложенные элементы <Orders>. Заметка sql:is-constant указывается в элементе OrderList<ElementType>, делая его постоянным, и следовательно не сопоставленным ни с одной таблицей базы данных. Хотя элемент <OrderList> не сопоставляется ни с одной таблицей/столбцом базы данных, он отображается в результирующем XML-документе в виде элемента контейнера, содержащего вложенные элементы <Orders>.

<?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="Sales.SalesOrderHeader" >   <AttributeType name="SalesOrderID" />   <attribute type="SalesOrderID" /></ElementType><ElementType name="OrderList" sql:is-constant="1">   <element type="Orders">      <sql:relationship                    key-relation="Sales.Customer"                    foreign-relation="Sales.SalesOrderHeader"                    key="CustomerID"                    foreign-key="CustomerID" />   </element></ElementType><ElementType name="Sales.Customer" >   <AttributeType name="CustomerID" />   <attribute type="CustomerID" />   <element type="OrderList" /></ElementType></Schema>

Проверка образца запроса XPath к схеме

  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл под именем isConstant-xdr.xml.

  2. Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем isConstant-xdrT.xml в том каталоге, был сохранен файл isConstant-xdr.xml. Запрос XPath в шаблоне выбирает все элементы <Sales.Customer> с атрибутом CustomerID со значением 1.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" ><sql:xpath-query mapping-schema="isConstant-xdr.xml" >   /Sales.Customer[@CustomerID=1]</sql:xpath-query></ROOT>
    

    Путь к каталогу схемы сопоставления (файл isConstant-xdr.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:

    mapping-schema="C:\MyDir\isConstant-xdr.xml"
    
  3. Создайте и запустите тестовый сценарий SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.

    Дополнительные сведения см. в разделе Использование ADO для выполнения запросов SQLXML 4.0.

Полученный результирующий набор показан ниже.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  <Sales.Customer CustomerID="1">    <OrderList>      <Sales.SalesOrderHeader SalesOrderID="43860" />       <Sales.SalesOrderHeader SalesOrderID="44501" />       <Sales.SalesOrderHeader SalesOrderID="45283" />       <Sales.SalesOrderHeader SalesOrderID="46042" />     </OrderList>  </Sales.Customer></ROOT>