Freigeben über


Erstellen von CDATA-Abschnitten mit sql:use-cdata (XDR-Schema)

Wichtiger HinweisWichtig

Dieses Thema ist als Referenz für ältere Anwendungen enthalten. Für dieses Feature wird künftig keine Entwicklungsarbeit mehr geleistet. Vermeiden Sie daher, dieses Feature bei neuen Entwicklungsarbeiten zu verwenden. Verwenden Sie stattdessen XSD-Schemas mit Anmerkungen zum Erstellen von XML-Sichten. Weitere Informationen finden Sie unter Einführung in XSD-Schemas mit Anmerkungen (SQLXML 4.0). Sie können vorhandene XDR-Schemas mit Anmerkungen in XSD-Schemas konvertieren. Weitere Informationen finden Sie unter Konvertieren von XDR-Schemas mit Anmerkungen in gleichbedeutende XSD-Schemas (SQLXML 4.0).

In XML werden Textblöcke, die Zeichen enthalten, die andernfalls als Markup erkannt werden würden, mit CDATA-Abschnitten in Escapezeichen umgewandelt.

Microsoft SQL Server-Daten können Zeichen enthalten, die vom XML-Parser als Sonderzeichen betrachtet werden, beispielsweise werden Zeichen wie <, >, <=, & als Markupzeichen behandelt. Wenn Sie vermeiden möchten, dass SQL Server-Daten mit Sonderzeichen als Markup behandelt werden, können Sie sie in einen CDATA-Abschnitt einfügen. Der Text innerhalb des CDATA-Abschnitts wird als Nur-Text behandelt.

Mit der sql:use-cdata-Anmerkung wird angegeben, ob die vom SQL Server zurückgegebenen Daten in einen CDATA-Abschnitt eingeschlossen werden sollen. Geben Sie mit der sql:use-cdata-Anmerkung an, ob der Wert der Spalte, die durch sql:field bezeichnet wird, in einen CDATA-Abschnitt eingeschlossen werden soll. Die sql:use-cdata-Anmerkung kann für <ElementType> oder <element> angegeben werden. Sie akzeptiert einen booleschen Wert (0 = FALSE, 1 = TRUE). sql:use-cdata kann nicht in Verbindung mit sql:url-encode oder einem Attribut der Attributtypen ID, IDREF, IDREFS, NMTOKEN oder NMTOKENS angegeben werden.

Beispiele

Bestimmte Anforderungen müssen erfüllt werden, um aus den folgenden Beispielen funktionierende Codebeispiele zu erstellen. 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 das <AddressLine1>-Element auf 1 (True) festgelegt. Daraufhin werden die Daten für <AddressLine1> in einem CDATA-Abschnitt zurückgegeben.

<?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>

So testen Sie eine XPath-Beispielabfrage mit dem Schema

  1. Kopieren Sie den oben stehenden Schemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen UseCdataXdr.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen UseCdataXdrT.xml im gleichen Verzeichnis, in dem Sie UseCdataXdr.xml gespeichert haben.

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

    Der für das Zuordnungsschema (UseCdataXdr.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:\MyDir\UseCdataXdr.xml"
    
  3. 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 das Resultset aufgeführt:

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