Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le query XPath possono includere spazi dei nomi. Se gli elementi dello schema sono qualificati per lo spazio dei nomi, ovvero se includono uno spazio dei nomi di destinazione, le query XPath sullo schema devono specificare questo spazio dei nomi.
Poiché l'utilizzo del carattere jolly (*) non è supportato in SQLXML 4.0, è necessario specificare la query XPath usando un prefisso dello spazio dei nomi. Per risolvere questo prefisso, usare la proprietà namespaces per specificare l'associazione dello spazio dei nomi.
Nell'esempio seguente la query XPath specifica gli spazi dei nomi usando il carattere jolly (*) e le funzioni XPath local-name() e namespace-uri(). Questa query XPath restituisce tutti gli elementi in cui il nome locale è Contact e l'URI dello spazio dei nomi è urn:myschema:Contacts.
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
In SQLXML 4.0 questa query XPath deve essere specificata con un prefisso dello spazio dei nomi. Un esempio è x:Contact, dove x è il prefisso dello spazio dei nomi. Si consideri lo schema XSD seguente:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns:con="urn:myschema:Contacts"
targetNamespace="urn:myschema:Contacts">
<complexType name="ContactType">
<attribute name="CID" sql:field="ContactID" type="ID"/>
<attribute name="FName" sql:field="FirstName" type="string"/>
<attribute name="LName" sql:field="LastName"/>
</complexType>
<element name="Contact" type="con:ContactType" sql:relation="Person.Contact"/>
</schema>
Poiché questo schema definisce lo spazio dei nomi di destinazione, una query XPath (ad esempio "Employee") sullo schema deve includere lo spazio dei nomi .
Si tratta di un'applicazione Microsoft Visual Basic di esempio che esegue una query XPath (x:Employee) sullo schema XSD precedente. Per risolvere il prefisso, l'associazione dello spazio dei nomi viene specificata usando la proprietà namespaces.
Annotazioni
Nel codice è necessario specificare il nome dell'istanza di SQL Server nella stringa di connessione. In questo esempio viene inoltre specificato l'uso di SQL Server Native Client (SQLNCLI11) per il provider di dati, che richiede l'installazione di software client di rete aggiuntivo. Per altre informazioni, vedere Requisiti di sistema per SQL Server Native Client.
Option Explicit
Private Sub Form_Load()
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim stm As New ADODB.Stream
con.Open "provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI11;Data Source=SqlServerName;Initial Catalog=AdventureWorks;Integrated Security=SSPI;"
Set cmd.ActiveConnection = con
stm.Open
cmd.Properties("Output Stream").Value = stm
cmd.Properties("Output Encoding") = "utf-8"
cmd.Properties("Mapping schema") = "C:\DirectoryPath\con-ex.xml"
cmd.Properties("namespaces") = "xmlns:x='urn:myschema:Contacts'"
' Debug.Print "Set Command Dialect to DBGUID_XPATH"
cmd.Dialect = "{ec2a4293-e898-11d2-b1b7-00c04f680c56}"
cmd.CommandText = "x:Contact"
cmd.Execute , , adExecuteStream
stm.Position = 0
Debug.Print stm.ReadText(adReadAll)
End Sub
Per testare questa applicazione
Salvare lo schema XSD di esempio in una cartella.
Creare un progetto eseguibile di Visual Basic e copiarne il codice. Modificare il percorso della directory specificato in base alle esigenze.
Aggiungere il riferimento al progetto seguente:
"Microsoft ActiveX Data Objects 2.8 Library"Eseguire l'applicazione.
Risultato parziale:
<y0:Employee xmlns:y0="urn:myschema:Contacts"
LName="Achong" CID="1" FName="Gustavo"/>
<y0:Employee xmlns:y0="urn:myschema:Employees"
LName="Abel" CID="2" FName="Catherine"/>
I prefissi generati nel documento XML sono arbitrari, ma vengono mappati allo stesso spazio dei nomi.