Esclusione di elementi dello schema dal documento XML risultante tramite sql:map-field (Schema XDR)

Nota importanteImportante

Questo argomento è incluso come riferimento per le applicazioni legacy. Per questa funzionalità non è previsto alcun progetto di sviluppo in futuro, pertanto si consiglia di evitare di utilizzarla in un nuovo progetto di sviluppo. Utilizzare invece gli schemi XSD con annotazioni per creare le viste XML. Per ulteriori informazioni, vedere Introduzione agli schemi XSD con annotazioni (SQLXML 4.0). È possibile convertire gli schemi XDR con annotazioni esistenti in schemi XSD. Per ulteriori informazioni, vedere Conversione di schemi XDR con annotazioni in schemi XSD equivalenti (SQLXML 4.0).

A causa del mapping predefinito, ogni elemento e attributo nello schema XDR viene mappato a una tabella e a una colonna di database. Può talvolta essere necessario creare un elemento nello schema XDR che non venga mappato ad alcuna tabella o colonna di database e che non venga visualizzato nel documento XML. A tale scopo, è necessario specificare l'annotazione sql:map-field.

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

sql:map-field accetta un valore booleano (0 = FALSE, 1 = TRUE). L'annotazione sql:map-field è valida solo in un nodo <attribute>, <element> o <ElementTypes> con contenuto di solo testo (content=textOnly). L'annotazione non è valida in un nodo <element> o <ElementTypes> mappato a una tabella.

Esempi

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

A. Definizione dell'annotazione sql:map-field

Si supponga di disporre di uno schema XDR da un'altra origine. Tale schema XDR è costituito dall'elemento <Person.Contact> con gli attributi ContactID, FirstName e LastName.

Nell'eseguire il mapping dello schema XDR alla tabella Person.Contact nel database, sql:map-field viene specificato nell'attributo HomeAddress perché la tabella Person.Contact non archivia gli indirizzi personali dei dipendenti. Di conseguenza, questo attributo 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> viene mappato alla tabella Person.Contact e tutti gli attributi vengono mappati alle colonne con lo stesso nome nella tabella Person.Contact. Per ulteriori informazioni sul mapping predefinito, vedere Mapping predefinito di attributi ed elementi XDR a tabelle e colonne.

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

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 mapField-xdr.xml.

  2. Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome mapField-xdrT.xml nella stessa directory in cui è stato salvato il file mapField-xdr.xml. La query nel modello seleziona il record Person.Contact con ContactID uguale a 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>
    

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

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

    Per ulteriori informazioni, vedere Utilizzo di ADO per eseguire query SQLXML 4.0.

Set di risultati:

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

Si noti che EmployeeID, FirstName e LastName sono presenti, mentre non lo è HomeAdress, in quanto lo schema di mapping specifica un valore 0 per l'attributo sql:map-field.

Vedere anche

Riferimento