Udostępnij przez


Wykluczanie elementów schematu wynikowy dokument XML przy użyciu języka sql: mapowane (SQLXML 4.0)

Każdy element i atrybuty w schemacie XSD mapuje do widoku tabela bazy danych i kolumna z powodu domyślnego odwzorowania.Jeśli chcesz utworzyć element w schematu XSD, która nie mapuje się do dowolnej tabela bazy danych (Widok) lub kolumna, a nie jest wyświetlany w kodzie XML, można określić sql:mapped adnotacja.

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

The sql:mapped annotation takes a logiczny value (0 = false, 1 = true). Dopuszczalne wartości to 0, 1, true i false.

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ślanie sql: mapowane adnotacji

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

W tabela Person.Contact bazy danych AdventureWorks, mapowanie tego schematu XSD sql:mapped jest określony na TelefonDomowy atrybut, ponieważ w tabela Pracownicy nie przechowuje adresy domowej pracowników.W rezultacie ten atrybut nie jest mapowany do bazy danych i 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.

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

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

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

  2. Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako mappedT.xml sql w tym samym katalogu, w którym zapisano sql mapped.xml.

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

    To ścieżka do katalogu określonego dla mapowania schematu (MySchema.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\sql-mapped.xml"
    
  3. Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.

    Aby uzyskać więcej informacji zobacz Przy użyciu obiektu ADO w celu wykonać kwerendy SQLXML.

W poniższym przykładzie zwraca informacje o każdej z kolumn zwracanych przez funkcje wycenione tabela w bazie danych.

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

Należy zwrócić uwagę, że ContactID, imię i nazwisko są obecne, ale TelefonDomowy jest nie, ponieważ 0 dla określonego schematu mapowania sql:mapped atrybut.