Sdílet prostřednictvím


Vyloučení elementů schématu z dokumentu XML pomocí sql:mapped

platí pro:SQL Serverazure SQL Database

Každý prvek a atribut v XSD schématu se mapuje na databázovou tabulku/pohled a sloupec kvůli výchozímu mapování. Pokud chcete vytvořit prvek v XSD schématu, který se nemapuje na žádnou databázovou tabulku (view) nebo sloupec a který se neobjevuje v XML, můžete specifikovat sql : mapovanou anotaci.

Anotace sql:mapped je obzvlášť užitečná, pokud schéma nelze upravit nebo pokud je schéma použito k ověření XML z jiných zdrojů a přesto obsahuje data, která nejsou uložena ve vaší databázi. Anotace sql:mapped se liší od sql:is-constant tím, že nemapované prvky a atributy se v XML dokumentu neobjevují.

Anotace sql:mapped přijímá Booleovskou hodnotu (0 = nepravda, 1 = pravda). Přijatelné hodnoty jsou 0, 1, pravda a nepravda.

Examples

Pro vytvoření pracovních vzorků podle následujících příkladů musíte splnit určité požadavky. Pro více informací viz Požadavky na spouštění SQLXML Examples.

A. Specifikace sql:mapované anotace

Předpokládejte, že máte XSD schéma z jiného zdroje. Toto schéma XSD se skládá z prvku <Person.Contact> s atributy ContactID,FirstName, LastName a HomeAddress .

Při mapování tohoto XSD schématu do tabulky Person.Contact v databázi AdventureWorks je sql:mapped specifikován v atributu HomeAddress , protože tabulka Employees neukládá domácí adresy zaměstnanců. V důsledku toho tento atribut není mapován na databázi a není vrácen v výsledném XML dokumentu, když je dotaz XPath zadán proti mapovacímu schématu.

Výchozí mapování probíhá pro zbytek schématu. Prvek <Person.Contact> se mapuje na tabulku Person.Contact a všechny atributy se mapují na sloupce se stejným názvem v tabulce Person.Contact.

<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>  
Pro testování vzorku dotazu XPath proti schématu
  1. Zkopírujte výše uvedený kód schématu a vložte ho do textového souboru. Uložte soubor jako sql-mapped.xml.

  2. Zkopírujte následující šablonu a vložte ji do textového souboru. Ulož soubor jako sql-mappedT.xml do stejného adresáře, kde jsi uložil sql-mapped.xml.

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

    Adresářová cesta určená pro mapovací schéma (MySchema.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:

    mapping-schema="C:\MyDir\sql-mapped.xml"  
    
  3. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.

    Pro více informací viz Použití ADO pro provádění dotazů SQLXML.

Toto je množina výsledků:

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

Všimněte si, že ContactID, FirstName a LastName jsou přítomny, ale HomeAddress není, protože mapovací schéma specifikovalo 0 pro atribut sql:mapped .

Viz také

Výchozí mapování prvků a atributů XSD na tabulky a sloupce (SQLXML 4.0)