Compartilhar via


Especificando um namespace de destino usando sql:target-namespace (Esquema XDR)

Observação importanteImportante

Este tópico está incluso como referência para aplicativos herdados. Não será feito nenhum trabalho de desenvolvimento futuro nesse recurso. Evite usá-lo em novos trabalhos de desenvolvimento. Em vez disso, use esquemas XSD anotados para criar exibições XML. Para obter mais informações, consulte Introdução a esquemas XSD anotados (SQLXML 4.0). Você pode converter esquemas XDR anotados existentes em esquemas XSD. Para obter mais informações, consulte Convertendo esquemas XDR anotados a esquemas XSD equivalentes (SQLXML 4.0).

A anotação sql:target-namespace pode ser usada para colocar elementos e atributos do namespace padrão em um namespace diferente. O atributo sql:target-namespace só pode ser acrescentado à marca <Schema> no esquema XDR.

O valor de sql:target-namespace é o URI de namespace a ser usado para gerar os elementos e atributos especificados no esquema de mapeamento. Esse URI é se aplicado a todos os elementos e atributos no namespace padrão. O documento XML retornado de consultas feitas neste esquema contém declarações xmlns:prefix ="uri" e coloca prefixos aos nomes de elemento e atributo da mesma forma. O URI que é usado vem do valor da anotação sql:target-namespace. Entretanto, o prefixo é gerado arbitrariamente e não corresponde a nenhum valor no esquema (mesmo se os prefixos forem usados no esquema).

Exemplos

Para criar exemplos de funcionamento usando os exemplos a seguir, é necessário atender a determinados requisitos. Para obter mais informações, consulte Requisitos para executar exemplos do SQLXML.

A. Especifique um namespace de destino

Nesse exemplo, a anotação sql:target-namespace é usada para especificar o namespace de destino. Como resultado, todos os elementos e atributos que teriam ido para o namespace padrão são redirecionados para o namespace de destino (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>

Para testar uma consulta XPath de exemplo com relação ao esquema

  1. Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como TargetNS-Xdr.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como TargetNS-XdrT.xml no mesmo diretório onde você salvou 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>
    

    A consulta Xpath no modelo solicita todos os elementos de <Customer> definidos no namespace "MyNamespace". No modelo, um prefixo, x, é associado ao namespace.

    O caminho de diretório especificado para o esquema de mapeamento (TargetNS-Xdr.xml) é relativo ao diretório em que o modelo foi salvo. Também é possível especificar um caminho absoluto, por exemplo:

    mapping-schema="C:\MyDir\TargetNS-Xdr.xml"
    
  3. Crie e use o Script de Teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.

    Para obter mais informações, consulte Usando o ADO para executar consultas do SQLXML 4.0.

A seguir está o conjunto de resultados:

<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>

Observe que os prefixos gerados são arbitrários, mas são mapeados para o mesmo namespace.

Consulte também

Referência