Freigeben über


Ausschließen von Schemaelementen aus dem resultierenden XML-Dokument mithilfe der "sql:map-field"-Anmerkung (XDR-Schema)

Wichtiger HinweisWichtig

Dieses Thema ist als Referenz für ältere Anwendungen enthalten. Für diese Funktion wird künftig keine Entwicklungsarbeit mehr geleistet. Vermeiden Sie daher das Verwenden dieser Funktion 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).

Aufgrund der Standardzuordnung werden alle Elemente und Attribute im XDR-Schema einer Datenbanktabelle und -spalte zugeordnet. Es kann vorkommen, dass Sie ein Element im XDR-Schema erstellen möchten, das keiner Datenbanktabelle oder -spalte zugeordnet ist und im XML-Dokument nicht angezeigt wird. In diesem Fall geben Sie die sql:map-field-Anmerkung an.

Die sql:map-field-Anmerkung unterscheidet sich insofern von sql:is-constant, als nicht zugeordnete Elemente und Attribute nicht im XML-Dokument angezeigt werden. sql:map-field ist insbesondere hilfreich, wenn das Schema nicht geändert werden kann oder verwendet wird, um XML aus anderen Quellen zu überprüfen, und außerdem Daten enthält, die nicht in der Datenbank gespeichert sind.

Die sql:map-field-Anmerkung akzeptiert einen booleschen Wert (0 = FALSE, 1 = TRUE). Die sql:map-field-Anmerkung gilt nur für einen <attribute>-, <element>- oder <ElementTypes>-Knoten mit Textinhalt (content=textOnly). Die Anmerkung gilt nicht für einen <element>- oder <ElementTypes>-Knoten, der einer Tabelle zugeordnet ist.

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 der "sql:map-field"-Anmerkung

Angenommen, Sie verfügen über ein XDR-Schema aus einer anderen Quelle. Dieses XDR-Schema besteht aus einem <Person.Person>-Element mit den Attributen BusinessEntityID, FirstName und LastName.

Beim Zuordnen dieses XDR-Schemas zur Person.Person-Tabelle in der Datenbank wird die sql:map-field-Anmerkung im HomeAddress-Attribut angegeben, da in der Person.Person-Tabelle keine Privatadressen von Mitarbeitern gespeichert werden können. Daher wird dieses Attribut nicht im XML-Dokument zurückgegeben, wenn eine XPath-Abfrage mit dem Zuordnungsschema ausgeführt wird.

Für den Rest des Schemas wird eine Standardzuordnung durchgeführt. Das <Person.Person>-Element wird der Person.Person-Tabelle und die Attribute den Spalten mit denselben Namen in der Person.Person-Tabelle zugeordnet. Weitere Informationen zur Standardzuordnung finden Sie unter Standardzuordnung von XDR-Elementen und -Attributen zu Tabellen und Spalten.

<?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="Person.Person" >
    <AttributeType name="BusinessEntityID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />
    <AttributeType name="HomeAddress" />

    <attribute type="BusinessEntityID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
    <attribute type="HomeAddress" sql:map-field="0" />
</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 mapField-xdr.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen mapField-xdrT.xml im selben Verzeichnis, in dem Sie mapField-xdr.xml gespeichert haben. Die Abfrage in der Vorlage wählt den Person.Person-Datensatz mit dem BusinessEntityID-Wert 1 aus.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:xpath-query mapping-schema="mapField-xdr.xml">
      /Person.Person[@BusinessEntityID=1]
    </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (mapField-xdr.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\mapField-xdr.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"> 
    <Person.Person BusinessEntityID="1" FirstName="Gustavo" LastName = "Achong"/> 
</ROOT>

EmployeeID, FirstName und LastName sind vorhanden, HomeAddress jedoch nicht, weil im Zuordnungsschema für das zugehörige sql:map-field-Attribut der Wert 0 angegeben ist.