Mapping predefinito di attributi ed elementi XDR a tabelle e colonne
Importante |
---|
Questo argomento è incluso come riferimento per le applicazioni legacy. Per questa caratteristica non è previsto alcun progetto di sviluppo in futuro. 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). |
In uno schema XDR con annotazioni, per impostazione predefinita, un elemento viene mappato a una tabella/vista con lo stesso nome mentre un attributo viene mappato alla colonna con lo stesso nome.
È possibile eseguire il mapping di elementi figlio non complessi dello schema alle colonne del database. Per eseguire il mapping di un elemento a una colonna del database, è necessario specificare l'attributo content dell'elemento con il valore textOnly. Se content=textOnly non viene specificato, è necessario riportare in modo esplicito l'annotazione sql:field per eseguire il mapping dell'<elemento> a una colonna del database. Per ulteriori informazioni, vedere Mapping esplicito di attributi ed elementi XDR a tabelle e colonne.
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 del mapping predefinito
In questo esempio l'elemento <Person.Person> viene mappato alla tabella Person.Person del database AdventureWorks2008R2 mentre tutti gli attributi vengono mappati alle colonne con lo stesso nome della tabella Person.Person. In questo schema XDR non viene specificata alcuna annotazione.
<?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.Person" >
<AttributeType name="BusinessEntityID" />
<AttributeType name="FirstName" />
<AttributeType name="LastName" />
<attribute type="BusinessEntityID" />
<attribute type="FirstName" />
<attribute type="LastName" />
</ElementType>
</Schema>
Per testare una query XPath di esempio sullo schema
Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file con il nome DefaultXdr.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome DefaultXdrT.xml nella stessa directory nella quale è stato salvato DefaultXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="DefaultXdr.xml"> /Person.Person[@BusinessEntityID < 3] </sql:xpath-query> </ROOT>
Il percorso della directory specificato per lo schema di mapping (DefaultXdr.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\DefaultXdr.xml"
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:
<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
<Person.Person BusinessEntityID="1" FirstName="Gustavo" LastName="Achong"/>
<Person.Person BusinessEntityID="2" FirstName="Catherine" LastName="Abel">
</ROOT>
B. Mapping di un <elemento> XML a una colonna del database
Per impostazione predefinita, un elemento XML viene mappato a una tabella del database mentre un attributo viene mappato a una colonna del database. Per eseguire il mapping di un elemento a una colonna del database, è necessario specificare l'attributo content dell'elemento con il valore textOnly.
Questo schema XDR è costituito dallo stesso elemento <Person.Person> dell'esempio precedente, ma i campi SQL (BusinessEntityID, FirstName, LastName) sono mappati agli elementi figlio anziché agli attributi.
<?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="BusinessEntityID" content="textOnly" />
<ElementType name="FirstName" content="textOnly" />
<ElementType name="LastName" content="textOnly" />
<ElementType name="Person.Person" >
<element type="BusinessEntityID" />
<element type="FirstName" />
<element type="LastName" />
</ElementType>
</Schema>
Per impostazione predefinita, l'elemento <Person.Person> dello schema XDR viene mappato alla tabella Person.Person del database AdventureWorks2008R2. L'attributo content viene specificato negli elementi figlio <FirstName> e <LastName>. Gli elementi figlio in questione vengono pertanto mappati alle colonne con lo stesso nome della tabella Person.Person.
Nota
Non è supportato contenuto misto, ovvero elementi con elementi di testo e figlio.
Per testare una query Xpath di esempio sullo schema
Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file con il nome ElementXdr.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome ElementXdrT.xml nella stessa directory nella quale è stato salvato ElementXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="ElementXdr.xml"> /Person.Person[BusinessEntityID < 3] </sql:xpath-query> </ROOT>
Il percorso della directory specificato per lo schema di mapping (ElementXdr.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\ElementXdr.xml"
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.Person>
<BusinessEntityID>1</BusinessEntityID>
<FirstName>Gustavo</FirstName>
<LastName>Achong</LastName>
</Person.Person>
<Person.Person>
<BusinessEntityID>2</BusinessEntityID>
<FirstName>Catherine</FirstName>
<LastName>Abel</LastName>
</Person.Person>
</ROOT>