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

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

示例

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

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

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

/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”进行比较。查询返回该上下文节点中 ContactID 为字符串值“4”的所有 <Employee> 元素子级:

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