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


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

Применимо к:SQL Server База данных SQL Azure

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

База данных в 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-кодирование или идентификатор, IDREFS, NMTOKEN и NMTOKENS.

Примеры

Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе "Требования к выполнению примеров 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>