Teilen über


Ausschließen von Schemaelementen aus dem XML-Dokument mithilfe von „sql:mapped“

Gilt für: SQL Server Azure SQL-Datenbank

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

Die sql:mapped-Anmerkung ist besonders nützlich, wenn das Schema nicht geändert werden kann oder wenn das Schema zum Überprüfen von XML aus anderen Quellen verwendet wird und dennoch Daten enthält, die nicht in Ihrer Datenbank gespeichert sind. Die sql:mapped-Anmerkung unterscheidet sich von "sql:is-constant ", da die nicht zugeordneten Elemente und Attribute nicht im XML-Dokument angezeigt werden.

Die sql:mapped-Anmerkung akzeptiert einen booleschen Wert (0 = false, 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 funktionierende Beispiele erstellt werden können. Weitere Informationen finden Sie unter Anforderungen für das 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.

Bei der Zuordnung dieses XSD-Schemas zur Tabelle "Person.Contact" in der AdventureWorks-Datenbank wird "sql:mapped" im Attribut "HomeAddress" angegeben, da die Tabelle "Employees" die Heimadressen von Mitarbeitern nicht speichert. 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 <Element "Person.Contact> " ist der Tabelle "Person.Contact" zugeordnet, und alle Attribute werden den Spalten mit demselben Namen in der Tabelle "Person.Contact" 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 für das 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 < 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.

Dies ist das Resultset:

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

Beachten Sie, dass die ContactID, FirstName und LastName vorhanden sind, homeAddress jedoch nicht, weil das Zuordnungsschema 0 für das sql:mapped-Attribut angegeben hat.

Weitere Informationen

Standardzuordnung von XSD-Elementen und -Attributen zu Tabellen und Spalten (SQLXML 4.0)