以下示例演示如何在 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 查询
- 复制 示例架构代码 并将其粘贴到文本文件中。 将文件另存为 SampleSchema1.xml。 
- 创建以下模板(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"
- 创建并使用 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 查询
- 复制 示例架构代码 并将其粘贴到文本文件中。 将文件另存为 SampleSchema1.xml。 
- 创建以下模板(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"
- 创建并使用 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>