Partilhar via


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

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

Exemplos

Um. Usar a função de conversão explícita number()

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

Supondo que o valor de ContactID não seja numérico, a consulta a seguir converterá ContactID em um número e o comparará com o valor 4. Em seguida, a consulta retorna todos os <filhos do elemento Employee> do nó de contexto com o atributo ContactID que tem um valor numérico de 4:

/child::Contact[number(attribute::ContactID)= 4]  

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

/Contact[number(@ContactID) = 4]  

Em termos relacionais, a consulta retorna um funcionário com uma ContactID de 4.

Para testar a consulta XPath no esquema de mapeamento
  1. Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.

  2. Crie o modelo a seguir (ExplicitConversionA.xml) e salve-o no diretório em que SampleSchema1.xml foi salvo.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /Contact[number(@ContactID)=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 é 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 Usar o ADO para executar consultas SQLXML 4.0.

O conjunto de resultados para esta execução de modelo é:

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

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

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

A consulta a seguir converte ContactID em uma cadeia de caracteres e a compara com o valor da cadeia de caracteres "4". A consulta retorna todos os <filhos do elemento Employee> do nó de contexto com uma ContactID com um valor de cadeia de caracteres "4":

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

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

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

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

Para testar a consulta XPath no esquema de mapeamento
  1. Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.

  2. Crie o modelo a seguir (ExplicitConversionB.xml) e salve-o no diretório em que SampleSchema1.xml foi salvo.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        Contact[string(@ContactID)="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 é 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 Usar o ADO para executar consultas SQLXML 4.0.

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

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