我从SoapUI启动了测试,我想找出一个XQuery断言。我无法编写XQuery请求。
我的xml文件(回答请求SoapUI)
<parent>
<total1>10.000</total1>
<total2>15</total2>
<value1>1</value1>
<value2>2</value2>
</parent>
期望的答案
我只希望以总数开头的节点以及节点值的数字值
<parent>
<total1>10.0</total1>
<total2>15.0</total2>
</parent>
当前无法使用的XQuery请求
<parent>
{ for $n in //parent/*[starts-with(name(),'total')]
return ($n/name() ,$n/number(text()) )
}
</parent>
这不正确,因为它仅显示节点名称。所有节点都在同一行上:<parent> total1 10.0 total2 15.0 </parent>
我可以使用XQuery或XPath做到这一点
答案 0 :(得分:3)
可以使用element constructors创建新元素节点:
<parent>{
for $n in //parent/*[starts-with(name(), 'total')]
return element { name($n) } { number($n) }
}</parent>
函数调用number(<total1>10.000</total1>)
产生10
而不是10.0
。如果您需要自定义的数值表示形式,可以使用format-number
函数:
<parent>{
for $n in //parent/*[starts-with(name(), 'total')]
return element { name($n) } { format-number(number($n), '#.0') }
}</parent>