使用xquery的多个条件过滤XML

时间:2014-08-18 17:54:36

标签: xml db2 xquery

您好我有许多XML文件,其结构如下:

<mydoc>
      <EC>
         <spec>
            <name>A para</name>
            <para>A</para>
            <val>40</val>
         </spec>
         <spec>
            <name>Input Voltage</name>
            <para>Vin</para>
            <val>40</val>
         </spec>
      </EC>
</mydoc>

我只需要过滤那些规格为para = Vin且val> 30

的XML文件

我的Xquery应该是什么样的?在DB2中我到目前为止有这个吗?

for $x in db2-fn:xmlcolumn('TABLE.XMLCOLUMN')/mydoc

所以这将迭代所有XML文件,我将在$ x中使用mydoc元素标签,但现在我如何实现多个条件并返回满足我条件的规范名称?

1 个答案:

答案 0 :(得分:1)

有几种表达方式。 XPath谓词:

for $x in db2-fn:xmlcolumn('TABLE.XMLCOLUMN')/mydoc[EC/spec[para = 'Vin' and val > 40]]

或XQuery的where子句。这也使用XPath谓词,我认为它更容易阅读:

for $x in db2-fn:xmlcolumn('TABLE.XMLCOLUMN')/mydoc
let $specs := $x/EC/spec
where ($spec[para = 'Vin' and val > 40])

两者都应该给你相同的结果。