Udostępnij przez


Za pomocą sql:pole (schematu XDR)

Important noteImportant Note:

W tym temacie jest włączony jako odwołanie w przypadku starszych aplikacji.Żadna praca przyszłe będą mogły wykonać tej funkcji.Należy unikać stosowania tej funkcji w nowej pracy rozwoju.Zamiast tego należy używać adnotacjami schematów XSD tworzenia widoków XML.Aby uzyskać więcej informacji zobaczWprowadzenie do adnotacjami schematy XSD (SQLXML 4.0).Istniejące schematy XDR adnotacjami można przekonwertować schematów XSD.Aby uzyskać więcej informacji zobaczKonwertowanie adnotacjami schematy XDR Equivalent schematy XSD (SQLXML 4.0).

The sql:field annotation specifies the mapping between an element or atrybut in an annotated schema to a kolumna in a database, and can be added to an element or atrybut. The sql:field annotation is ignored on <AttributeType> elements of the annotated schema.The sql:field atrybut specifies the name of the mapped kolumna in a tabela or view.

Na przykład sql:field można określić nazwę kolumna, jeśli taka nazwa nie są zgodne z pole w schemacie określonej w XDR. Wartość sql:field musi być nazwą kolumna. Four-Part kolumna nazwy, takie jak database.owner.tabela.kolumnaname nie są dozwolone.Ta zasada obowiązuje dla wszystkich adnotacji, które pobierają nazwę kolumna jako jego wartość.

Przykłady

Aby utworzyć próbek pracy przy użyciu poniższych przykładach, musi spełniać określone wymagania.Aby uzyskać więcej informacji zobaczWymagania dotyczące uruchamianie SQLXML przykłady.

A.Określ sql:pole dla <atrybut> schematu XDR

W tym schemacie adnotacjami sql:field Adnotacja jest określona na <atrybut> element schematu. The sql:field atrybut maps the Email atrybut in the schema to the EmailAddress kolumna in the Person.Contact tabela.

Ponieważ nazwy atrybut ContactID w schemacie XDR jest taka sama, jak kolumna ContactID tabela Person.Contact sql:field nie określono. Mapowanie jest domyślnie.

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

Aby przetestować kwerendę XPath próbki względem schematu

  1. Skopiować powyższy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako sqlFieldXdr.xml.

  2. Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako sqlFieldXdrT.xml w tym samym katalogu, w którym zapisano sqlFieldXdr.xml.Klient z ContactID 1 wybierane przez kwerendę, w szablonie.

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

    To ścieżka do katalogu określonego dla mapowania schematu (sqlFieldXdr.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\SqlXmlTest\sqlFieldXdr.xml"
    
  3. Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.

    Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

W tym polu jest zestaw wyników częściowych:

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

W schemacie, mapowanie atrybutów może być globalny zadeklarowana (na przykład <AttributeType... >, zadeklarowany poza zakresem <ElementType>), a następnie odwołanie do w <Atrybut typu =... >, jak pokazano na tym schemacie.

W tym schemacie Nazwisko zadeklarowaniu globalnie i odwołanie do zakres klientów atrybut**<ElementType>**.

<?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.Określ sql:pole dla <element> w schemacie XDR

W tym schemacie adnotacjami sql:field Adnotacja jest określona na <element> w schemacie. The sql:field annotation maps the <Email> podrzędność element in the schema to the EmailAddress kolumna in the Person.Contact tabela.

Bez wyraźnej adnotację <Wiadomości e-mail> element podrzędność <Kontakty> element w schemacie nie będą mapowane na kolumnie AdresEmail tabela Person.Contact ponieważ domyślnego mapowania elementów do relacji, a nie do pole (wyjątek występuje, gdy <ElementType> zawiera textOnly atrybut).

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

Aby przetestować kwerendę XPath próbki względem schematu

  1. Skopiować powyższy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako sqlFieldElementXdr.xml.

  2. Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako sqlFieldElementXdrT.xml w tym samym katalogu, w którym zapisano sqlFieldElementXdr.xml.Klient z ContactID 1 wybierane przez kwerendę, w szablonie.

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

    To ścieżka do katalogu określonego dla mapowania schematu (sqlFieldElementXdr.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\SqlXmlTest\sqlFieldElementXdr.xml"
    
  3. Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.

    Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

W tym polu jest zestaw wyników częściowych:

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

Jeśli content="textOnly" jest określony na adres e-mail **<ElementType>**i jest używana domyślna nazwa kolumna SQL ("AdresEmail"), sql:field Adnotacja nie jest wymagany dla elementu podrzędnego. W takim przypadek <AdresEmail> element podrzędność będzie mapowany AdresEmail kolumna w tabela Person.Contact.

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