节点的 XPath 测试存在并包含一个数字

XPath test for node exists and contains a number

我需要 XPath 或 XQuery 中的条件来确定 product 是否有节点 Id 以及该节点是否有数字。

<ns34:Product>
  <ns34:Id>100</ns34:Id>
</ns34:Product>
<ns34:Product>
  <ns34:Id>104</ns34:Id>
</ns34:Product>

假设您的实际 XML 格式正确,只有一个根元素...

并且您已经为ns34前缀正确注册了一个命名空间...

And 您以某种方式 select 编辑了所需的 Product(您的问题中未给出标准)并将其绑定到变量,$p...

此表达式将测试 $p 是否具有 ns34:Id 子元素:

$p/ns34:Id

而这个表达式将测试它是否是一个数字:

number($p/ns34:Id) = $p/ns34:Id

并且此表达式将 select 那些具有 ns34:Id 子元素为数字的产品:

//ns34:Product[number(ns34:Id) = ns34:Id]