【问题标题】:XQuery while using distinct-values()使用 distinct-values() 时的 XQuery
【发布时间】:2012-06-20 04:42:03
【问题描述】:

XML 文件

<Cities>
  <Place>
    <City n="New Delhi"></City>
    <City n="Chandigarh"></City>
    <City n="Mumbai"></City>
  </Place>
  <Place>
    <City n="New Delhi"></City>
    <City n="Chandigarh"></City>
  </Place>
  <Place>
    <City n="New Delhi"></City>
    <City n="Mumbai"></City>
  </Place>
</Cities>

我正在使用以下 XQuery -

for $x in doc("sample")/Cities/Place/City
   order by $x/@n
   return distinct-values($x/@n)

我期待的结果是—— Chandigarh Mumbai New Delhi

但是得到 - Chandigarh Chandigarh Mumbai Mumbai New Delhi New Delhi New Delhi

请告诉我哪里出错了?

【问题讨论】:

    标签: xml xpath xquery


    【解决方案1】:

    请试试这个 -

    for $x in distinct-values(doc("sample")/Cities/Place/City/@n)
       order by $x
       return $x
    

    我已经用 baseX 7.1 进行了同样的检查,并按照您的预期顺利运行 :)

    【讨论】:

    • @John-它工作正常,完全符合我的预期。非常感谢
    【解决方案2】:

    您现在对每个值分别调用distinct-valuesdistinct-values 返回序列中的不同值,但该序列现在仅包含一个元素。您应该调用distinct-values(...),其中... 是城市名称的序列。

    【讨论】:

    • @Simeon-我明白你想说的。谢谢
    【解决方案3】:

    不同值函数

    let $items := (1,2,4,4,5,5,9,9,9,9,3,3,2)
    let $unique-items-by := distinct-values($items)
    return
       <result>   
    
          <items>
          {
             for $item in $unique-items-by
             return <item>{$item}</item>
          }
          </items>
    
       </result>
    

    【讨论】:

      【解决方案4】:

      使用 distinct-values 函数
      独特的项目

       let  $x:=doc("/db/my.xml")
      let $unique-items := distinct-values($x)
       for $x in $unique-items
      
      return (
       $unique-items
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-17
        • 2011-07-14
        • 1970-01-01
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-15
        相关资源
        最近更新 更多