我想说明我最初的问题(链接如下)如何获得所有元素及其属性的列表。
我正在寻找的是这个:
- 所有元素及其属性的列表
- 使元素和属性相关联/清楚哪些元素和属性属于一起
- 没有任何重复项(但如果例如一个属性与两个元素一起使用,我希望它与两个元素一起列出)
- 以这种方式:
Element1 @Attribute1, @Attribute2,…
Element2 @Attribute3, @Attribute4,…
到目前为止,我已经尝试了:
for $x in collection("XYZ")
let $att := local-name(//@*)
let $ele := local-name(//*)
let $eleatt := string-join($ele, $att)
return $eleatt
在阅读了@michaelhkay的有益评论后,我将修改为:
for $x in collection("XYZ")
return distinct-values(string-join(($x//*!local-name(), $x//@*!local-name()), ', '))
然而,到目前为止,元素和属性没有关联,我也不确定是否所有不同的值都消失了,因为我仍然看到一些两次(然而,它们可以与各种元素一起使用)。
谢谢你的帮助!
提前感谢,
Eleonore
原始问题:如何通过XQuery获得所有元素及其属性的列表
如果您想通过元素名称消除重复元素,我会使用
for $el in collection("XYZ")//*
group by $name := node-name($el)
return ($name, $el[1]/@*!('@' || node-name())) => string-join(' ')
https://xqueryfiddle.liberty-development.net/6qVSgeZ/1
请注意,如果您按照名称分组元素,则不会区分例如<foo att1="value"/>
和<foo att2="value"/>
,即您只会得到foo
元素之一的输出。因此,在这种情况下,如何/在何处消除重复并不十分清楚。