Создание разделов CDATA с использованием sql:use-cdata (SQLXML 4.0)
В XML разделы CDATA используются для экранирования блоков текста, содержащего символы, которые можно принять за символы разметки.
Иногда, база данных в Microsoft SQL Server может содержать символы, которые средство синтаксического анализа XML принимает за символы разметки; например, угловые скобки (< и >), символ «меньше или равно» (<=), а также амперсанд (&) принимаются за символы разметки. Однако подобные особые символы можно упаковать в раздел CDATA во избежание их обработки, как символов разметки. Средство синтаксического анализа XML считает все, что находится внутри раздела CDATA, простым текстом.
Заметка sql:use-cdata используется для указания того, что данные, возвращаемые SQL Server, следует упаковать в раздел CDATA (то есть, она указывает, должно ли значение из столбца, обозначенного заметкой sql:field, быть заключено в раздел CDATA). Заметку sql:use-cdata можно задавать только для элементов, которые сопоставляются со столбцом базы данных.
Заметка sql:use-cdata имеет логическое значение (0 = false, 1 = true). Допустимые значения: 0, 1, true и false.
Эту заметку нельзя использовать с sql:use-cdata или для типов атрибута ID, IDREF, 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 к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем UseCData.xml.
Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем 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"
Создайте и запустите тестовый сценарий 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>