Udostępnij za pośrednictwem


Wykluczanie elementów schematu wynikowy dokument XML za pomocą sql: mapowane (SQLXML 4.0)

Każdy element i atrybut schematu XSD mapuje widoku tabela bazy danych i kolumna z powodu domyślnego mapowania.Jeśli chcesz utworzyć element w schematu XSD, który mapuje kolumna lub tabela bazy danych (Widok) i który nie ma w pliku XML, można określić sql:mapped adnotacji.

sql:mapped Adnotacja jest szczególnie przydatne, jeśli nie można zmodyfikować schemat lub schematu jest używany do sprawdzania poprawności XML z innych źródeł i zawiera jeszcze danych nie jest przechowywana w bazie danych.sql:mapped Adnotacji różni się od sql:is-constant , niezamapowani elementy i atrybuty nie występują w dokumencie XML.

sql:use-cdata Adnotacji przyjmuje wartość logiczna (0 = false, 1 = true).Dopuszczalne wartości to 0, 1, true i false.

Przykłady

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

A.Określanie sql: mapowane adnotacji

Załóżmy, że masz schematu XSD z innego źródło.Tego schematu XSD składa się z <Person.Person> element z BusinessEntityID, Imię, nazwisko, i TelefonDomowy atrybuty.

W mapowaniu tego schematu XSD w Person.Person tabela w AdventureWorks2008R2 bazy danych, sql:mapped jest określona na TelefonDomowy atrybut, ponieważ w tabela Pracownicy nie przechowuje adres domowy 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.

Mapowanie domyślne odbywa się w pozostałej części schematu.<Person.Person> elementu mapy do tabela Person.Person i wszystkie atrybuty mapować kolumn o tej samej nazwie w tabela Person.Person.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Person">
    <xsd:complexType>
      <xsd:attribute name="BusinessEntityID"   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ć przykładowe kwerendy XPath względem schematu

  1. Kod schematu skopiować 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.Person[@BusinessEntityID &lt; 10]
        </sql:xpath-query>
    </ROOT>
    

    Ścieżka katalogu określonego dla mapowania schematu (MySchema.xml) jest katalog, w którym zapisany szablon.Ś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 szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO do wykonywania kwerend SQLXML.

Jest to zestaw wyników:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Person BusinessEntityID="1" FirstName="Gustavo" LastName="Achong" /> 
  <Person.Person BusinessEntityID="2" FirstName="Catherine" LastName="Abel" /> 
  <Person.Person BusinessEntityID="3" FirstName="Kim" LastName="Abercrombie" /> 
  <Person.Person BusinessEntityID="4" FirstName="Humberto" LastName="Acevedo" /> 
  <Person.Person BusinessEntityID="5" FirstName="Pilar" LastName="Ackerman" /> 
  <Person.Person BusinessEntityID="6" FirstName="Frances" LastName="Adams" /> 
  <Person.Person BusinessEntityID="7" FirstName="Margaret" LastName="Smith" /> 
  <Person.Person BusinessEntityID="8" FirstName="Carla" LastName="Adams" /> 
  <Person.Person BusinessEntityID="9" FirstName="Jay" LastName="Adams" /> 
</ROOT>

BusinessEntityID, imię i nazwisko są obecne, ale TelefonDomowy jest nie, ponieważ schemat mapowanie określony 0 dla sql:mapped atrybut.