Freigeben über


Anfordern von URL-Verweisen zu BLOB-Daten mit sql:url-encode (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 das Verwenden dieses Features bei neuen Entwicklungsarbeiten. 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).

Wenn in dem XDR-Schema mit Anmerkungen ein Attribut (oder Element) einer BLOB-Spalte in Microsoft SQL Server zugeordnet ist, werden die Daten im codierten Base-64-Format innerhalb von XML zurückgegeben. Eine Beschreibung der SQL Server-Datentypen sowie der entsprechenden XML-Datentypen finden Sie unter Datentypkonvertierungen (XDR-Schema).

Wenn ein Verweis auf die Daten (URI) zurückgegeben werden soll, der später zum Abrufen der BLOB-Daten in einem binären Format verwendet werden kann, geben Sie die sql:url-encode-Anmerkung an.

Legen Sie die sql:url-encode-Anmerkung fest, um anzugeben, dass statt des Werts im Feld eine URL zum Feld zurückgegeben werden soll. sql:url-encode ist auf den Primärschlüssel angewiesen, um eine SINGLETON-Auswahl in der URL zu generieren. Der Primärschlüssel kann mit der sql:key-fields-Anmerkung angegeben werden. Weitere Informationen finden Sie unter Identifizieren von Schlüsselspalten mithilfe von sql:key-Feldern (SQLXML 4.0).

Die sql:url-encode-Anmerkung akzeptiert einen booleschen Wert (0 = FALSE, 1 = TRUE). sql:url-encode kann nicht in Verbindung mit sql:use-cdata oder einem Attribut der Attributtypen IDREF, IDREFS, NMTOKEN oder NMTOKENS angegeben werden.

Beispiele

Es müssen bestimmte Anforderungen erfüllt sein, damit aus den folgenden Beispielen funktionstüchtige Beispiele erstellt werden können. Weitere Informationen finden Sie unter Anforderungen zum Ausführen von SQLXML-Beispielen.

A. Angeben von 'sql:url', um einen URL-Verweis auf BLOB-Daten zu erhalten

In diesem Beispiel gibt das Zuordnungsschema sql:url-encode für das LargePhoto-Attribut an, um den URI-Verweis auf ein Produktfoto (statt der binären Daten im codierten Base-64-Format) abzurufen.

<?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="ProductPhoto" sql:relation="Production.ProductPhoto" 
                 sql:key-fields="ProductPhotoID" >
      <AttributeType name="ProductPhotoID" />
      <AttributeType name="LargePhoto" />

      <attribute type="ProductPhotoID" />
      <attribute type="LargePhoto" sql:url-encode="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 UrlEncodeXdr.xml.

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="UrlEncodeXdr.xml">
        /ProductPhoto[@ProductPhotoID=100]
      </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (UrlEncodeXdr.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\UrlEncodeXdr.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">
  <ProductPhoto ProductPhotoID="100" LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto"/>
</ROOT>