Freigeben über


Ausschließen von Schemaelementen aus dem resultierenden XML-Dokument mithilfe von 'sql:mapped' (SQLXML 4.0)

Aufgrund der Standardzuordnung werden alle Elemente und Attribute im XSD-Schema einer Datenbanktabelle/-sicht oder -spalte zugeordnet. Wenn Sie ein Element im XDR-Schema erstellen möchten, das keiner Datenbanktabelle (Sicht) oder -spalte zugeordnet und im XML-Dokument nicht angezeigt wird, können Sie die sql:mapped-Anmerkung angeben.

Die sql:mapped-Anmerkung ist besonders 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:mapped-Anmerkung unterscheidet sich von der sql:is-constant-Anmerkung insofern, als dass die nicht zugeordneten Elemente und Attribute nicht im XML-Dokument angezeigt werden.

Die sql:mapped-Anmerkung akzeptiert einen booleschen Wert (0 = false und 1 = true). Zulässig sind die Werte 0, 1, true und false.

Beispiele

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

A. Angeben der 'sql:mapped'-Anmerkung

Angenommen, Sie haben ein XSD-Schema von einer anderen Quelle. Dieses XSD-Schema besteht aus einem <Person.Contact>-Element mit den Attributen ContactID, FirstName, LastName und HomeAddress.

Beim Zuordnen dieses XSD-Schemas zur Person.Contact-Tabelle in der AdventureWorks-Datenbank wird sql:mapped für das HomeAddress-Attribut angegeben, da in der Employees-Tabelle keine Privatadressen von Mitarbeitern gespeichert werden. Daher wird dieses Attribut nicht der Datenbank zugeordnet und nicht im resultierenden 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.Contact>-Element wird der Person.Contact-Tabelle und die Attribute den Spalten mit den gleichen Namen in der Person.Contact-Tabelle zugeordnet.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Contact">
    <xsd:complexType>
      <xsd:attribute name="ContactID"   type="xsd:string"/>
      <xsd:attribute name="FirstName"    type="xsd:string" />
      <xsd:attribute name="LastName"     type="xsd:string" />
      <xsd:attribute name="HomeAddress" type="xsd:string" 
                     sql:mapped="false" />
    </xsd:complexType>
  </xsd:element>
</xsd: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 sql-mapped.xml.

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="sql-mapped.xml">
            /Person.Contact[@ContactID &lt; 10]
        </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (MySchema.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\sql-mapped.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-Abfragen.

Im Folgenden wird das Resultset aufgeführt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong" /> 
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel" /> 
  <Person.Contact ContactID="3" FirstName="Kim" LastName="Abercrombie" /> 
  <Person.Contact ContactID="4" FirstName="Humberto" LastName="Acevedo" /> 
  <Person.Contact ContactID="5" FirstName="Pilar" LastName="Ackerman" /> 
  <Person.Contact ContactID="6" FirstName="Frances" LastName="Adams" /> 
  <Person.Contact ContactID="7" FirstName="Margaret" LastName="Smith" /> 
  <Person.Contact ContactID="8" FirstName="Carla" LastName="Adams" /> 
  <Person.Contact ContactID="9" FirstName="Jay" LastName="Adams" /> 
</ROOT>

ContactID, FirstName und LastName sind vorhanden, HomeAddress jedoch nicht, weil im Zuordnungsschema für das zugehörige sql:mapped-Attribut der Wert 0 (null) angegeben ist.