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

适用于:SQL Server Azure SQL 数据库

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

示例

A. 使用 number() 显式转换函数

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

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

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

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

/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"]  

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

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