Condividi tramite


Esclusione di elementi dello schema dal documento XML con sql:mapped

Si applica a: SQL Server Database SQL di Azure

A causa del mapping predefinito, viene eseguito il mapping di ogni elemento e attributo nello schema XSD a una vista/tabella e a una colonna di database. Se si desidera creare un elemento nello schema XSD che non esegue il mapping ad alcuna tabella di database (vista) o colonna e che non viene visualizzato nel codice XML, è possibile specificare l'annotazione sql:mapped .

L'annotazione sql:mapped è particolarmente utile se lo schema non può essere modificato o se lo schema viene usato per convalidare XML da altre origini e contiene dati non archiviati nel database. L'annotazione sql:mapped differisce da sql:is-constant in quanto gli attributi e gli elementi non mappati non vengono visualizzati nel documento XML.

L'annotazione sql:mapped accetta un valore booleano (0 = false, 1 = true). I valori possibili sono 0, 1, true e false.

Esempi

Per creare esempi reali utilizzando gli esempi seguenti, è necessario soddisfare alcuni requisiti. Per altre informazioni, vedere Requisiti per l'esecuzione di esempi SQLXML.

R. Specifica dell'annotazione sql:mapped

Si supponga di disporre di uno schema XSD di un'altra origine. Questo schema XSD è costituito da un elemento Person.Contact> con attributi ContactID, FirstName, LastName e HomeAddress.<

Nel mapping di questo schema XSD alla tabella Person.Contact nel database AdventureWorks, sql:mapped viene specificato nell'attributo HomeAddress perché la tabella Employees non archivia gli indirizzi home dei dipendenti. Di conseguenza, questo attributo non viene mappato al database e non viene restituito nel documento XML risultante quando viene specificata una query XPath sullo schema di mapping.

Per il resto dello schema viene eseguito il mapping predefinito. L'elemento <Person.Contact> esegue il mapping alla tabella Person.Contact e tutti gli attributi eseguono il mapping alle colonne con lo stesso nome nella tabella 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>  
Per testare una query Xpath di esempio sullo schema
  1. Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file con il nome sql-mapped.xml.

  2. Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome sql-mappedT.xml nella stessa directory in cui è stato salvato il file 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>  
    

    Il percorso di directory specificato per lo schema di mapping (MySchema.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:

    mapping-schema="C:\MyDir\sql-mapped.xml"  
    
  3. Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.

    Per altre informazioni, vedere Uso di ADO per eseguire query SQLXML.

Set di risultati:

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

Si noti che sono presenti ContactID, FirstName e LastName, ma HomeAddress non è perché lo schema di mapping specificato 0 per l'attributo sql:mapped .

Vedi anche

Mapping predefinito di elementi e attributi XSD a tabelle e colonne (SQLXML 4.0)