在 XPath 查询中指定显式转换函数 (SQLXML 4.0)
以下示例显示如何在 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 查询
复制示例架构代码并将其粘贴到文本文件中。 将该文件另存为 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"]
可以指定属性轴(@)的快捷方式,因为子轴是默认值,因此可以从查询中省略它:
/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>