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


Создание разделов CDATA с помощью sql:use-cdata (SQLXML 4.0)

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

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

Заметка sql:use-cdata используется для указания того, что данные, возвращаемые SQL Server, должны быть упакованы в раздел CDATA (то есть указывает, должно ли значение из столбца, указанного в sql:field разделе CDATA). Заметку sql:use-cdata можно указать только в элементах, сопоставленных с столбцом базы данных.

Заметка sql:use-cdata принимает логическое значение (0 = false, 1 = true). Допустимые значения: 0, 1, true и false.

Эту заметку нельзя использовать с sql:url-encode типами атрибутов IDREF, IDREFS, NMTOKEN и NMTOKENS или IDTOKENS.

Примеры

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

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

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

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Address"   
               sql:relation="Person.Address"   
               sql:key-fields="AddressID" >  
   <xsd:complexType>  
        <xsd:sequence>  
          <xsd:element name="AddressID"  type="xsd:string" />  
          <xsd:element name="AddressLine1" type="xsd:string"   
                       sql:use-cdata="1" />  
        </xsd:sequence>  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Проверка образца запроса XPath к схеме
  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл как UseCData.xml.

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

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

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

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

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

Это частичный результирующий набор:

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