【问题标题】:Filtering XML using multiple conditions of xquery使用xquery的多个条件过滤XML
【发布时间】:2014-08-18 17:54:36
【问题描述】:

您好,我有许多 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 元素标记,但现在我如何实现多个条件并仅返回满足我的条件的规范名称?

【问题讨论】:

标签: xml db2 xquery


【解决方案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])

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

【讨论】:

  • 感谢您的回复。因此,这将遍历所有文档,并且对于每个文档,它都会遍历所有规范?但我只需要为每个文档返回 1 个,即仅当文档满足条件时。我该怎么做?
  • @Milind 所以你想返回一个 如果它的任何 后代符合你的标准?还是只有所有 都符合标准?
  • 如果它的任何规范后代符合我的标准,我想返回一个 mydoc。谢谢。
  • @Milind 用应该回答您问题的新逻辑更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多