Freigeben über


Angeben von expliziten Konvertierungsfunktionen in XPath-Abfragen (SQLXML 4.0)

In den folgenden Beispielen wird gezeigt, wie explizite Konvertierungsfunktionen in XPath-Abfragen angegeben werden. Die XPath-Abfragen in diesen Beispielen werden für das in SampleSchema1.xml enthaltene Zuordnungsschema angegeben. Weitere Informationen zu diesem Beispielschema finden Sie unter Beispiel-XSD-Schema mit Anmerkungen für XPath-Beispiele (SQLXML 4.0).

Beispiele

A. Verwenden der expliziten Konvertierungsfunktion number()

Die number()-Funktion konvertiert ein Argument in eine Zahl.

Vorausgesetzt, der Wert von ContactID ist nicht numerisch, dann wird mit der folgenden Abfrage der Wert von ContactID in eine Zahl umgewandelt und mit dem Wert 4 verglichen. Die Abfrage gibt dann alle untergeordneten <Employee>-Elemente des Kontextknotens zurück, dessen ContactID-Attribut den numerischen Wert 4 aufweist:

/child::Contact[number(attribute::ContactID)= 4]

Es kann eine Abkürzung für die attribute-Achse (@) angegeben werden, und weil die child-Achse die Standardachse ist, muss sie in der Abfrage nicht angegeben werden:

/Contact[number(@ContactID) = 4]

Anders ausgedrückt, die Abfrage gibt Mitarbeiter mit einem ContactID-Attributwert von 4 zurück.

So testen Sie die XPath-Abfrage mit dem Zuordnungsschema

  1. Kopieren Sie den Beispielschemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (ExplicitConversionA.xml), und speichern Sie sie in dem Verzeichnis, in dem SampleSchema1.xml gespeichert wurde.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        /Contact[number(@ContactID)=4]
      </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (SampleSchema1.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\SampleSchema1.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.

Das Resultset für diese Vorlagenausführung sieht so aus:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." /> 
</ROOT>

A. Verwenden der expliziten Konvertierungsfunktion string()

Die string()-Funktion konvertiert ein Argument in eine Zeichenfolge.

Mit der folgenden Abfrage wird der Wert von ContactID in eine Zeichenfolge umgewandelt und mit dem Zeichenfolgenwert "4" verglichen. Die Abfrage gibt dann alle untergeordneten <Employee>-Elemente des Kontextknotens zurück, dessen ContactID-Attribut den Zeichenfolgenwert "4" aufweist:

/child::Contact[string(attribute::ContactID)="4"]

Es kann eine Abkürzung für die attribute-Achse (@) angegeben werden, und weil die child-Achse die Standardachse ist, muss sie in der Abfrage nicht angegeben werden:

/Contact[string(@ContactID)="4"]

Diese Abfrage gibt praktisch die gleichen Ergebnisse wie das vorherige Abfragebeispiel zurück, obwohl hier der Zeichenfolgenwert und nicht der numerische Wert (d. h. die Zahl 4) ausgewertet wird.

So testen Sie die XPath-Abfrage mit dem Zuordnungsschema

  1. Kopieren Sie den Beispielschemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen SampleSchema1.xml.

  2. Erstellen Sie die folgende Vorlage (ExplicitConversionB.xml), und speichern Sie sie in dem Verzeichnis, in dem SampleSchema1.xml gespeichert wurde.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        Contact[string(@ContactID)="4"]
      </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (SampleSchema1.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\SampleSchema1.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 finden Sie das Resultset der Vorlagenausführung:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." /> 
</ROOT>