Erstellen von CDATA-Abschnitten mit sql:use-cdata (SQLXML 4.0)
In XML werden Textblöcke, die Zeichen enthalten, die andernfalls als Markup erkannt würden, mit CDATA-Abschnitten in Escapezeichen umgewandelt.
Eine Datenbank in Microsoft SQL Server kann manchmal Zeichen enthalten, die vom XML-Parser als Markupzeichen behandelt werden. Zum Beispiel werden spitze Klammern (< und >), das Symbol "kleiner als oder gleich" (<=) und das kaufmännische Und-Zeichen (&) als Markupzeichen behandelt. Sie können diese Sonderzeichen in einem CDATA-Abschnitt jedoch umschließen, um zu verhindern, dass sie als Markupzeichen behandelt werden. Der Text innerhalb des CDATA-Abschnitts wird vom XML-Parser als Nur-Text behandelt.
Mit der sql:use-cdata-Anmerkung wird angegeben, dass die von SQL Server zurückgegebenen Daten in einem CDATA-Abschnitt umschlossen werden (d. h., sie gibt an, ob der Wert aus einer Spalte, die von sql:field angegeben wird, in einem CDATA-Abschnitt eingeschlossen werden soll). Die sql:use-cdata-Anmerkung kann nur für Elemente angegeben werden, die einer Datenbankspalte zugeordnet werden.
Die sql:use-cdata-Anmerkung akzeptiert einen booleschen Wert (0 =false, 1 = true). Zulässig sind die Werte 0, 1, true und false.
Diese Anmerkung kann nicht mit sql:url-encode oder für die Attributtypen ID, IDREF, IDREFS, NMTOKEN und NMTOKENS verwendet werden.
Beispiele
Damit mithilfe der folgenden Beispiele funktionierende Beispiele erstellt werden können, müssen bestimmte Anforderungen erfüllt sein. Weitere Informationen finden Sie unter Anforderungen zum Ausführen von SQLXML-Beispielen.
A.Angeben von sql:use-cdata für ein Element
Im folgenden Schema wird sql:use-cdata für <AddressLine1> innerhalb des <Address>-Elements auf 1 (True) festgelegt. Daraufhin werden die Daten in einem CDATA-Abschnitt zurückgegeben.
<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>
So testen Sie eine XPath-Beispielabfrage mit dem Schema
Kopieren Sie den oben stehenden Schemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen UseCData.xml.
Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen UseCDataT.xml im gleichen Verzeichnis, in dem Sie UseCData.xml gespeichert haben.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="UseCData.xml"> /Address[AddressID < 11] </sql:xpath-query> </ROOT>
Der für das Zuordnungschema (UseCData.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert wird. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:
mapping-schema="C:\SqlXmlTest\UseCData.xml"
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Im Folgenden wird ein Teil des Resultsets aufgeführt:
<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>