Freigeben über


Verwenden von 'sql:field' (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).

Die sql:field-Anmerkung gibt die Zuordnung zwischen einem Element oder Attribut in einem Schema mit Anmerkungen und einer Datenbankspalte an und kann einem Element oder einem Attribut hinzugefügt werden. Die sql:field-Anmerkung wird bei <AttributeType>-Elementen des Schemas mit Anmerkungen ignoriert. Das sql:field-Attribut gibt den Namen der zugeordneten Spalte in einer Tabelle oder Sicht an.

Beispielsweise kann mithilfe von sql:field der Spaltenname angegeben werden, wenn dieser Name nicht mit dem Feld im XDR-Schema übereinstimmt. Der Wert von sql:field muss ein Spaltenname sein. Vierteilige Spaltennamen wie database.owner.table.columnname sind nicht zulässig. Dies gilt für alle Anmerkungen, die einen Spaltennamen als Wert annehmen.

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 zum Ausführen von SQLXML-Beispielen.

A. Angeben von 'sql:field' für ein <Attribut> im XDR-Schema

In diesem Schema mit Anmerkungen wird die sql:field-Anmerkung im <Attributelement> des Schemas angegeben. Das sql:field-Attribut ordnet das Email-Attribut im Schema der EmailAddress-Spalte in der Person.Contact-Tabelle zu.

Da der Attributname ContactID im XDR-Schema der ContactID-Spalte in der Person.Contact-Tabelle entspricht, wird sql:field nicht angegeben. Die Zuordnung wird standardmäßig vorgenommen.

<?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="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="ContactID" />
    <AttributeType name="Email" />
    <attribute type="ContactID" />
    <attribute type="Email" sql:field="EmailAddress" />
</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 sqlFieldXdr.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen sqlFieldXdrT.xml im gleichen Verzeichnis wie sqlFieldXdrT.xml. Die Abfrage in der Vorlage wählt einen Kunden mit der ContactID 1 aus.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="sqlFieldXdr.xml">
        /Contacts[@ContactID="1"]
      </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (sqlFieldXdr.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert ist. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:

    mapping-schema="C:\SqlXmlTest\sqlFieldXdr.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 ein Teil des Resultsets aufgeführt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Contacts ContactID="1" Email="gustavo0@adventure-works.com" /> 
</ROOT>

In einem Zuordnungsschema können Attribute global deklariert werden (z. B. kann <AttributeType...> außerhalb des Bereichs von <ElementType> deklariert werden) und dann, wie in diesem Schema gezeigt, in <attribute type=...> referenziert werden.

In diesem Schema wird das LastName-Attribut global deklariert und im Bereich des <ElementType> von Customer referenziert.

<?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">
<AttributeType name="LastName" />
<ElementType name="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="ContactID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />
    
    <attribute type="CustomerID" />
    <attribute type="FName" sql:field="FirstName" />
    <attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>

B. Angeben von 'sql:field' für ein <Element> im XDR-Schema

In diesem Schema mit Anmerkungen wird die sql:field-Anmerkung für <element> im Schema angegeben. Die sql:field-Anmerkung ordnet das untergeordnete <Email>-Element im Schema der <EmailAddress>-Spalte in der <Person.Contact>-Tabelle zu.

Ohne die explizite Anmerkung wird das untergeordnete <Email>-Element des <Contacts>-Elements im Schema nicht der EmailAddress-Spalte der Person.Contact-Tabelle zugeordnet, da Elemente standardmäßig nicht einem Feld, sondern einer Relation zugeordnet werden. (Eine Ausnahme stellt der Fall dar, dass <ElementType> ein textOnly-Attribut enthält.)

<?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="Email" />
  <ElementType name="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="ContactID" />

    <attribute type="ContactID" />
    <element type="Email" sql:field="EmailAddress" />
  </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 sqlFieldElementXdr.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen sqlFieldElementXdrT.xml im gleichen Verzeichnis wie sqlFieldElementXdr.xml. Die Abfrage in der Vorlage wählt einen Kunden mit der ContactID 1 aus.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="sqlFieldElementXdr.xml">
        /Contacts[@ContactID="1"]
      </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (sqlFieldElementXdr.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert ist. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:

    mapping-schema="C:\SqlXmlTest\sqlFieldElementXdr.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 ein Teil des Resultsets aufgeführt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Contacts ContactID="1"> 
    <Email>gustavo0@adventure-works.com</Email> 
  </Contacts> 
</ROOT>

Wird content="textOnly" für <ElementType> der E-Mail-Adresse angegeben und der Standardname der SQL-Spalte verwendet ("EmailAddress"), ist die sql:field-Anmerkung im untergeordneten Element nicht erforderlich. In diesem Fall wird das untergeordnete <EmailAddress>-Element der <EmailAddress>-Spalte in der <Person.Contact>-Tabelle zugeordnet.

<?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="EmailAddress" content="textOnly" />
  <ElementType name="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="ContactID" />

    <attribute type="ContactID" />
    <element type="EmailAddress" />
  </ElementType>
</Schema>