[英]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.