簡體   English   中英

在xQuery中使用屬性名稱

[英]using an attribute name in an xQuery

我有這個Xml:

<Item key = "id">
   <SubItem id = "1" a = "2"/>
   <SubItem id = "1" b = "3"/>
   <SubItem x = "1"/>
   <SubItem y = "1"/>
   <SubItem z = "1"/>
</Item>

我想選擇有其名稱等於該的屬性的子項(。)鍵

我想要一個返回此查詢的查詢:

<SubItem id = "1" a = "2"/>
<SubItem id = "1" b = "3"/>

所以我嘗試了:

let $x := ... my xml here...
let $key = $x/@id

return $x/*/@*[name(.) = $key]/..

這可行...

但我想要更簡潔的東西:

let $x := ... my xml here...
let $key = $x/@id

return $x/*/@$key

問題在於,該代碼無法編譯,因為它不允許我在@之后使用非文字(或通配符)。

真的不可能嗎? 提前致謝!!

您沒有提到您使用的是什么系統,但是有一種MarkLogic特定的方式來執行此操作:

let $data :=
  <Item key = "id">
   <SubItem id = "1" a = "2"/>
   <SubItem id = "1" b = "3"/>
   <SubItem x = "1"/>
   <SubItem y = "1"/>
   <SubItem z = "1"/>
  </Item>
let $path := fn:concat("$data/SubItem[exists(./@", fn:data($data/@key), ")]")
return xdmp:value($path)

據我所知,標准的XQuery並沒有比您更簡單的方法。 其他系統可能具有類似的擴展名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM