Udostępnij przez


Wykluczanie elementów schematu sql:map wynikowy dokument XML przy użyciu-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).

Z powodu domyślnego odwzorowania każdy element i atrybuty w schemacie XDR mapuje do tabela bazy danych i kolumn.W czasie można utworzyć elementu w schemacie XDR, która nie mapuje się do dowolnej tabela bazy danych lub kolumna, a nie pojawia się w danych XML.Można to zrobić, określając sql:map-field adnotacja.

The sql:map-field annotation differs from sql:is-constant in that the unmapped elements and attributes do not appear in the XML document.sql:map-field is especially useful if the schema cannot be modified or is used to validate XML from other sources yet contains data that is not stored in your database.

sql:map-field ma logiczny (0 = FAŁSZ, 1 = TRUE).The sql:map-field annotation is valid only on an <atrybut>, <element>, or <ElementTypes> with text-only content (content=textOnly).Adnotacja nie jest prawidłowy w <element> lub <ElementTypes> który jest mapowany do tabela.

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:map-pole adnotacji

Załóżmy, masz schematu XDR niektóre inne urządzenie źródłowe.Tego schematu XDR składa się z <Person.Contact> element o ContactID, Imię, Nazwiskoi atrybuty.

W tabeli Person.Contact w bazie danych, mapowanie tego schematu XDR sql:map-field jest określona na TelefonDomowy atrybut, ponieważ tabela Person.Contact nie przechowuje adresy domowej pracowników. W wyniku tego atrybut nie jest zwracana w wynikowym dokumencie XML, gdy określono kwerendę XPath schematem mapowania.

Domyślne mapowanie odbywa się w pozostałej części schematu.The <Person.Contact> element maps to the Person.Contact tabela, and all the attributes map to the columns with the same name in the Person.Contact tabela. Aby uzyskać więcej informacji na temat domyślnego mapowania zobacz Mapowanie domyślne XDR elementy i atrybuty tabel i kolumn.

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

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

  2. Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako xdrT.xml mapField w tym samym katalogu, w którym zapisano xdr.xml mapField.Kwerendy w szablonie wybierze rekord Person.Contact z ContactID równa 1.

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

    To ścieżka do katalogu określonego dla mapowania schematu (mapField xdr.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:\MyDir\mapField-xdr.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.

Poniżej znajduje się zestaw wyników:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
    <Person.Contact ContactID="1" FirstName="Gustavo" LastName = "Achong"/> 
</ROOT>

Należy zwrócić uwagę, że pole IDPracownika, imię i nazwisko są obecne, ale TelefonDomowy jest nie, ponieważ mapowanie schematu określona wartość 0 dla jego sql:map-field atrybut.