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


Создание разделов CDATA с использованием sql:use-cdata (схема XDR)

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

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

В XML, разделы CDATA используются, чтобы отделить блоки текста, содержащие символы, которые в противном случае могли бы быть восприняты как элементы разметки.

Данные Microsoft SQL Server могут содержать символы, воспринимаемые как специальные синтаксическим анализатором XML; например, такие символы, как <, >, <=, &, обрабатываются как символы разметки. Если нужно, чтобы данные SQL Server, содержащие специальные символы, не рассматривались как элементы разметки, можно поместить их в раздел CDATA. Текст в разделе CDATA обрабатывается, как простой текст.

Заметка sql:use-cdata указывает, что данные, возвращенные SQL Server, помещаются в раздел CDATA. Используйте заметку sql:use-cdata, чтобы показать, что значение из столбца, указанного sql:field, должно быть заключено в раздел CDATA. Заметка sql:use-cdata может быть указана на <ElementType> или <element>, и принимает логическое значение (0 = FALSE, 1 = TRUE). Заметку sql:use-cdata нельзя использовать с sql:url-encode или любым типом атрибутов ID, IDREF, IDREFS, NMTOKEN или NMTOKENS.

Примеры

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

А. Задание заметки sql:use-cdata на элементе

В этой схеме заметка sql:use-cdata установлена в значение 1 (TRUE) для элемента <AddressLine1>. В результате данные для <AddressLine1> возвращаются в разделе CDATA.

<?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="AddressID" content="textOnly" />   <ElementType name="AddressLine1" content="textOnly" />   <ElementType name="Address" sql:relation="Person.Address">      <element type="AddressID" />      <element type="AddressLine1" sql:use-cdata="1"  />   </ElementType></Schema>

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

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

  2. Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем UseCdataXdrT.xml в том же каталоге, где был сохранен файл UseCdataXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  <sql:xpath-query mapping-schema="UseCdataXdr.xml">    /Address[@AddressID=1]  </sql:xpath-query></ROOT>
    

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  <Address>    <AddressID>1</AddressID>     <AddressLine1>       <![CDATA[ 1970 Napa Ct.]]>     </AddressLine1>  </Address></ROOT>