如何通过XQuery获得相关元素和属性的列表(没有重复项)



我想说明我最初的问题(链接如下)如何获得所有元素及其属性的列表。
我正在寻找的是这个:
  • 所有元素及其属性的列表
  • 使元素和属性相关联/清楚哪些元素和属性属于一起
  • 没有任何重复项(但如果例如一个属性与两个元素一起使用,我希望它与两个元素一起列出)
  • 以这种方式:
    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元素之一的输出。因此,在这种情况下,如何/在何处消除重复并不十分清楚。

最新更新