XQuery-从父匹配给定模式中获取节点

时间:2018-10-02 12:55:07

标签: xpath xquery

我想根据给定的模式过滤XML节点的子节点。

我的XML

<parent>
  <total1>10</total1>
  <total2>15</total2>
  <value1>1</value1>
  <value2>2</value2>
</parent>

与该给定模式匹配的过滤器节点

total*

预期结果

<parent>
  <total1>10</total1>
  <total2>15</total2>
</parent>

我尝试使用此xQuery,但它不起作用。我不知道什么是最好的解决方法

for $n in //parent/*[starts-with(.,total)]
return $n

此外,我希望能够在输出中显示类似的内容

<total1>number(10)</total1>
<total2>number(15)</total2>
输出中的

,用于将节点值从字符串转换为数字。 number(10)来自number(text())

1 个答案:

答案 0 :(得分:2)

两个小更正:

  • 您需要检查元素的名称;否则,将检查元素的字符串值是否以给定的子字符串开头。
  • total需要加引号;否则,它将被视为XPath表达式。

这是结果:

for $n in //parent/*[starts-with(name(), 'total')]
return $n
相关问题