在 XPath 查询中指定显式转换函数 (SQLXML 4.0)

以下示例演示如何在 XPath 查询中指定显式转换函数。 这些示例中的 XPath 查询针对 SampleSchema1.xml中包含的映射架构指定。 有关此示例架构的信息,请参阅 XPath 示例的示例带批注的 XSD 架构(SQLXML 4.0)。

例子

答: 使用 number() 显式转换函数

number() 函数将参数转换为数字。

假设 ContactID 的值为非数值,以下查询会将 ContactID 转换为数字,并将其与值 4 进行比较。 然后,该查询返回上下文节点的所有 <Employee> 元素子元素,该属性的 ContactID 属性的数值为 4:

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

可以指定轴(@)的快捷方式 attribute ,因为 child 轴是默认值,因此可以从查询中省略它:

/Contact[number(@ContactID) = 4]  

在关系术语中,查询返回 ContactID 为 4 的员工。

针对映射架构测试 XPath 查询
  1. 复制 示例架构代码 并将其粘贴到文本文件中。 将文件另存为 SampleSchema1.xml。

  2. 创建以下模板(ExplicitConversionA.xml),并将其保存在保存 SampleSchema1.xml 的目录中。

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

    为映射架构(SampleSchema1.xml)指定的目录路径相对于保存模板的目录。 也可以指定绝对路径,例如:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. 创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 执行该模板。

    有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询

此模板执行的结果集为:

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

B. 使用 string() 显式转换函数

string() 函数将参数转换为字符串。

以下查询将 ContactID 转换为字符串,并将其与字符串值“4”进行比较。 该查询返回上下文节点的所有 <Employee> 元素子级,其字符串值为“4”的 ContactID

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

可以指定轴(@)的快捷方式 attribute ,因为 child 轴是默认值,因此可以从查询中省略它:

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

在功能上,此查询返回与上一个示例查询相同的结果,但计算针对字符串值而不是数值(即数字 4)。

针对映射架构测试 XPath 查询
  1. 复制 示例架构代码 并将其粘贴到文本文件中。 将文件另存为 SampleSchema1.xml。

  2. 创建以下模板(ExplicitConversionB.xml),并将其保存在保存 SampleSchema1.xml 的目录中。

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

    为映射架构(SampleSchema1.xml)指定的目录路径相对于保存模板的目录。 也可以指定绝对路径,例如:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. 创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 执行该模板。

    有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询

下面是模板执行的结果集:

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