Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As consultas XPath podem incluir namespaces. Se os elementos de esquema forem qualificados para namespace (ou seja, se incluirem um namespace de destino), as consultas XPath no esquema deverão especificar esse namespace.
Como não há suporte para o uso do caractere curinga (*) no SQLXML 4.0, você deve especificar a consulta XPath usando um prefixo de namespace. Para resolver esse prefixo, use a propriedade namespaces para especificar a associação de namespace.
No exemplo a seguir, a consulta XPath especifica namespaces usando o caractere curinga (*) e as funções XPath local-name() e namespace-uri(). Essa consulta XPath retorna todos os elementos em que o nome local está Contact e o URI do namespace é urn:myschema:Contacts.
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
No SQLXML 4.0, essa consulta XPath deve ser especificada com um prefixo de namespace. Um exemplo é x:Contact, onde x está o prefixo do namespace. Considere o seguinte esquema XSD:
<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>
Como esse esquema define o namespace de destino, uma consulta XPath (como "Funcionário") no esquema deve incluir o namespace.
Este é um aplicativo de exemplo do Microsoft Visual Basic que executa uma consulta XPath (x:Employee) no esquema XSD anterior. Para resolver o prefixo, a associação de namespace é especificada usando a propriedade namespaces.
Observação
No código, você deve fornecer o nome da instância do SQL Server na cadeia de conexão. Além disso, este exemplo especifica o uso do SQL Server Native Client (SQLNCLI11) para o provedor de dados, o que exige a instalação de software cliente de rede adicional. Para obter mais informações, consulte Os Requisitos do Sistema para o 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
Para testar este aplicativo
Salve o esquema XSD de exemplo em uma pasta.
Crie um projeto executável do Visual Basic e copie o código para ele. Altere o caminho do diretório especificado conforme apropriado.
Adicione a seguinte referência de projeto:
"Microsoft ActiveX Data Objects 2.8 Library"Execute o aplicativo.
Este é o resultado parcial:
<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"/>
Os prefixos gerados no documento XML são arbitrários, mas são mapeados para o mesmo namespace.