Compartilhar via


Especificando funções de conversão explícitas em consultas XPath (SQLXML 4.0)

Os seguintes exemplos mostram como funções de conversão explícitas são especificadas em consultas XPath. As consultas XPath nesses exemplos são especificadas com relação ao esquema de mapeamento contido em SampleSchema1.xml. Para obter mais informações sobre esse esquema de exemplo, consulte Esquema XSD anotado de exemplo para exemplos de XPath (SQLXML 4.0).

Exemplos

A. Use a função de conversão explícita number()

A função number() converte um argumento em um número.

Supondo que o valor de BusinessEntityID seja não numérico, a consulta a seguir converte BusinessEntityID em um número e o compara com o valor 4. Em seguida, a consulta retorna todos os elementos filho de <Employee> do nó de contexto com o atributo BusinessEntityID cujo valor numérico é igual a 4:

/child::Person[number(attribute::BusinessEntityID)= 4]

Um atalho para o eixo attribute (@) pode ser especificado e, como o eixo child é o padrão, ele pode ser omitido da consulta:

/Person[number(@BusinessEntityID) = 4]

Em termos relacionais, a consulta retorna um funcionário com BusinessEntityID igual a 4.

Para testar a consulta XPath com relação ao esquema de mapeamento

  1. Copie o código do esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.

  2. Crie o seguinte modelo (ExplicitConversionA.xml) e salve-o no diretório onde SampleSchema1.xml foi salvo.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        /Contact[number(@BusinessEntityID)=4]
      </sql:xpath-query>
    </ROOT>
    

    O caminho do diretório especificado para o esquema de mapeamento (SampleSchema1.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\SampleSchema1.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.

O conjunto de resultados da execução do modelo é:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person BusinessEntityID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." /> 
</ROOT>

B. Use a função de conversão explícita string()

A função string() converte um argumento em uma cadeia de caracteres.

A consulta a seguir converte BusinessEntityID em uma cadeia de caracteres e a compara com o valor da cadeia de caracteres "4". A consulta retorna todos os elementos filho de <Employee> do nó de contexto com BusinessEntityID cujo valor da cadeia de caracteres é igual a "4":

/child::Contact[string(attribute::BusinessEntityID)="4"]

Um atalho para o eixo attribute (@) pode ser especificado e, como o eixo child é o padrão, ele pode ser omitido da consulta:

/Contact[string(@BusinessEntityID)="4"]

Funcionalmente, essa consulta retorna os mesmos resultados da consulta de exemplo anterior, ainda que a avaliação seja feita em relação ao valor de uma cadeia de caracteres, e não um valor numérico (ou seja, o número 4).

Para testar a consulta XPath com relação ao esquema de mapeamento

  1. Copie o código do esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.

  2. Crie o seguinte modelo (ExplicitConversionB.xml) e salve-o no diretório onde SampleSchema1.xml foi salvo.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        Person[string(@BusinessEntityID)="4"]
      </sql:xpath-query>
    </ROOT>
    

    O caminho do diretório especificado para o esquema de mapeamento (SampleSchema1.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\SampleSchema1.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.

Aqui está o conjunto de resultados da execução do modelo:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person BusinessEntityID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." /> 
</ROOT>