Creazione di elementi costanti tramite sql:is-constant (SQLXML 4.0)
Si applica a: SQL Server Database SQL di Azure
Per specificare un elemento costante, ovvero un elemento nello schema XSD che non esegue il mapping ad alcuna tabella di database o colonna, è possibile usare l'annotazione sql:is-constant . Questa annotazione accetta un valore booleano (0=false, 1=true). I valori possibili sono 0, 1, true e false. L'annotazione sql:is-constant può essere specificata in un elemento che non dispone di attributi. Se viene specificata in un elemento con valore true (o 1), l'elemento non viene mappato al database ma viene comunque visualizzato nel documento XML.
L'annotazione sql:is-constant può essere usata per:
Aggiunta di un elemento di livello principale al documento XML. XML richiede un singolo elemento di livello principale (elemento radice) per il documento.
Creazione di elementi contenitore, ad esempio un <elemento Orders> che esegue il wrapping di tutti gli ordini.
L'annotazione sql:is-constant può essere aggiunta a un< elemento complexType>.
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. Definizione di sql:is-constant per aggiungere un elemento contenitore
In questo schema XSD con annotazioni, <CustomerOrders> viene definito come elemento costante specificando l'attributo sql:is-constant con il valore 1. Pertanto, <CustomerOrders> non è mappato ad alcuna tabella o colonna di database. Questo elemento costante è costituito dagli elementi figlio Order>.<
Anche se CustomerOrders> non esegue il mapping ad alcuna tabella o colonna di database, viene comunque visualizzato nel codice XML risultante come elemento contenitore contenente gli <elementi figlio Order>.<
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustOrders"
parent="Sales.Customer"
parent-key="CustomerID"
child="Sales.SalesOrderHeader"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customer" sql:relation="Sales.Customer" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerOrders" sql:is-constant="1" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"
sql:relationship="CustOrders"
maxOccurs="unbounded" >
<xsd:complexType>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name="OrderDate" type="xsd:date" />
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd: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.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome isConstantT.xml nella stessa directory in cui è stato salvato il file isConstant.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="isConstant.xml"> Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
Il percorso di directory specificato per lo schema di mapping (isConstant.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\isConstant.xml"
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.
Di seguito è riportato il set di risultati parziale:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customer CustomerID="1">
<CustomerOrders>
<Order SalesOrderID="43860" OrderDate="2001-08-01" CustomerID="1" />
<Order SalesOrderID="44501" OrderDate="2001-11-01" CustomerID="1" />
<Order SalesOrderID="45283" OrderDate="2002-02-01" CustomerID="1" />
<Order SalesOrderID="46042" OrderDate="2002-05-01" CustomerID="1" />
...
</CustomerOrders>
</Customer>
</ROOT>