Specifica di uno spazio dei nomi di destinazione mediante sql:target-namespace (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). |
L'annotazione sql:target-namespace può essere utilizzata per posizionare gli elementi e gli attributi dello spazio dei nomi predefinito in uno spazio dei nomi differente. L'attributo sql:target-namespace può essere aggiunto solo al tag <Schema> nello schema XDR.
Il valore di sql:target-namespace rappresenta l'URI (Uniform Resource Identifier) dello spazio dei nomi da utilizzare per la generazione di elementi e attributi specificati nello schema di mapping. Questo URI viene applicato a tutti gli elementi e gli attributi nello spazio dei nomi predefinito. Il documento XML restituito dalle query eseguite su questo schema contiene le dichiarazioni xmlns:prefix="uri" e aggiunge di conseguenza un prefisso ai nomi degli elementi e degli attributi. L'URI utilizzato proviene dal valore dell'annotazione sql:target-namespace. Tuttavia, il prefisso viene generato arbitrariamente e non corrisponde ai valori dello schema (anche se i prefissi vengono utilizzati nello schema).
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 uno spazio dei nomi di destinazione
In questo esempio l'annotazione sql:target-namespace viene utilizzata per specificare lo spazio dei nomi di destinazione. Di conseguenza, tutti gli elementi e gli attributi assegnati allo spazio dei nomi predefinito vengono reindirizzati allo spazio dei nomi di destinazione (MyNamespace).
<?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"
sql:target-namespace="urn:MyNamespace">
<ElementType name="Sales.SalesOrderHeader" >
<AttributeType name="SalesOrderID" />
<attribute type="SalesOrderID"/>
</ElementType>
<ElementType name="Sales.Customer" >
<AttributeType name="CustomerID" />
<attribute type="CustomerID" />
<element type="Sales.SalesOrderHeader" >
<sql:relationship
key="CustomerID"
foreign-key="CustomerID"
key-relation="Sales.Customer"
foreign-relation="Sales.SalesOrderHeader" />
</element>
</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 TargetNS-Xdr.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome TargetNS-XdrT.xml nella stessa directory nella quale è stato salvato TargetNS-Xdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="TargetNS-Xdr.xml" xmlns:x="urn:MyNamespace" > x:Sales.Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
La query XPath nel modello richiede tutti gli elementi <Customer> definiti nello spazio dei nomi "MyNamespace". Allo spazio dei nomi nel modello viene associato il prefisso x.
Il percorso di directory specificato per lo schema di mapping (TargetNS-Xdr.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\TargetNS-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">
<y0:Sales.Customer xmlns:y0="urn:MyNamespace" CustomerID="1">
<y0:Sales.SalesOrderHeader SalesOrderID="43860" />
<y0:Sales.SalesOrderHeader SalesOrderID="44501" />
<y0:Sales.SalesOrderHeader SalesOrderID="45283" />
<y0:Sales.SalesOrderHeader SalesOrderID="46042" />
</y0:Sales.Customer>
</ROOT>
I prefissi generati XML sono arbitrari, ma eseguono il mapping allo stesso spazio dei nomi.