Creazione di elementi costanti tramite sql:is-constant (schema XDR)
Importante |
---|
Questo argomento è incluso come riferimento per le applicazioni legacy. Per questa funzionalità 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). |
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 ma che venga comunque visualizzato nel documento XML. Tali elementi vengono definiti elementi costanti. Per creare un elemento costante, specificare l'annotazione sql:is-constant. sql:is-constant accetta un valore booleano (0 = FALSE, 1 = TRUE).
Questa annotazione viene specificata in <ElementType>, che non viene mappato ad alcuna tabella di database, rendendo in tal modo l'annotazione un elemento costante. È possibile utilizzare l'annotazione sql:is-constant per:
Aggiunta di un elemento di livello principale al documento XML. XML richiede un singolo elemento di livello principale (elemento <root>) per il documento.
Creazione di elementi contenitore, ad esempio un elemento <Orders> che esegue il wrapping di tutti gli ordini.
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. Specificare sql:is-constant per aggiungere un elemento contenitore
In questo schema XDR con annotazioni, <OrderList> viene definito come elemento costante contenente tutti i sottoelementi <Orders>. L'annotazione sql:is-constant viene specificata in <ElementType> di OrderList, rendendola costante e pertanto non viene mappata ad alcuna tabella di database. Benché l'elemento <OrderList> non venga mappato ad alcuna tabella o colonna di database, viene comunque visualizzato nel documento XML risultante come elemento contenitore che contiene i sottoelementi <Orders>.
<?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="Sales.SalesOrderHeader" >
<AttributeType name="SalesOrderID" />
<attribute type="SalesOrderID" />
</ElementType>
<ElementType name="OrderList" sql:is-constant="1">
<element type="Orders">
<sql:relationship
key-relation="Sales.Customer"
foreign-relation="Sales.SalesOrderHeader"
key="CustomerID"
foreign-key="CustomerID" />
</element>
</ElementType>
<ElementType name="Sales.Customer" >
<AttributeType name="CustomerID" />
<attribute type="CustomerID" />
<element type="OrderList" />
</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 isConstant-xdr.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome isConstant-xdrT.xml nella stessa directory in cui è stato salvato isConstant-xdr.xml. La query XPath nel modello seleziona tutti gli elementi <Sales.Customer> il cui valore di attributo CustomerID è 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" > <sql:xpath-query mapping-schema="isConstant-xdr.xml" > /Sales.Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
Il percorso della directory specificato per lo schema di mapping (isConstant-xdr.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\isConstant-xdr.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">
<Sales.Customer CustomerID="1">
<OrderList>
<Sales.SalesOrderHeader SalesOrderID="43860" />
<Sales.SalesOrderHeader SalesOrderID="44501" />
<Sales.SalesOrderHeader SalesOrderID="45283" />
<Sales.SalesOrderHeader SalesOrderID="46042" />
</OrderList>
</Sales.Customer>
</ROOT>