如何通过XQuery获得所有元素及其属性的列表
如何通过XQuery获得所有元素及其属性的列表,xquery,Xquery,我对XQuery非常陌生,我正在尝试获取所有元素和所有属性的列表。 应该是这样的: 元素1@attributex,@attribue y。。。 元素2@attribute x,@attribute y。。。 元素3@attribute x,@attribute y 到目前为止,我正在尝试此操作,但出现错误“Item expected,sequence found”: 我觉得我正在把一个简单的步骤变成一个复杂的步骤。请帮忙 提前感谢,Eleonore提供了一系列属性节点,/*提供了一系列元素节点
我对XQuery非常陌生,我正在尝试获取所有元素和所有属性的列表。 应该是这样的:
元素1@attributex,@attribue y。。。
元素2@attribute x,@attribute y。。。
元素3@attribute x,@attribute y 到目前为止,我正在尝试此操作,但出现错误“Item expected,sequence found”: 我觉得我正在把一个简单的步骤变成一个复杂的步骤。请帮忙
提前感谢,Eleonore提供了一系列属性节点,
/*
提供了一系列元素节点。通常,要将类似于local-name()
的函数应用于序列中的每个项,对于节点,您有三个选项:
/local-name()
,例如/@*/local-name()
或/*/local-name()
代码>例如/@*!local-name()
。。返回
表达式,例如,/@*返回本地名称($att)/@*
提供属性节点序列,/*
提供元素节点序列。通常,要将类似于local-name()
的函数应用于序列中的每个项,对于节点,您有三个选项:
/local-name()
,例如/@*/local-name()
或/*/local-name()
代码>例如/@*!local-name()
。。返回
表达式,例如,/@*返回本地名称($att)/*!local-name()
函数的string-join()接受两个参数,一个字符串列表和一个分隔符。您正在尝试传递两个字符串列表。你想要
字符串联接((//*!local-name(),//*!local-name()),','))
当然,您可能还希望使用distinct-values()消除列表中的重复项,并将元素与属性名称区分开来,或者将属性名称与其显示的元素相关联。这是完全可能的。但是对于这一点,您必须问一个更精确的问题。local-name()函数将单个节点作为其参数,而不是节点序列。要对序列中的每个节点应用相同的函数,请使用“!”运算符:/*!local-name()
函数的string-join()接受两个参数,一个字符串列表和一个分隔符。您正在尝试传递两个字符串列表。你想要
字符串联接((//*!local-name(),//*!local-name()),','))
当然,您可能还希望使用distinct-values()消除列表中的重复项,并将元素与属性名称区分开来,或者将属性名称与其显示的元素相关联。这是完全可能的。但对于这一点,你必须问一个更精确的问题。@michaelhkay谢谢你,这非常有帮助!实际上,我想区分元素和属性名,并将各自的元素和属性关联起来,以便创建一个列表。理想情况下,也参考我在原始问题中列出的列表,它应该是这样的:-element1[at]attribute x=“value”、[at]attribue y=“value”、…-元素2[at]属性x=“值”,[at]属性y=“值”。。。我是否应该添加一个新的问题和这些影响,或者一个评论就足够了?我来这里的时间不长。再次感谢!最好提出一个新问题,更准确地说明您想要什么样的输出。通常给出一个输入和相应的期望输出就足以使一般要求变得清晰。@michaelhkay谢谢,这非常有用!实际上,我想区分元素和属性名,并将各自的元素和属性关联起来,以便创建一个列表。理想情况下,也参考我在原始问题中列出的列表,它应该是这样的:-element1[at]attribute x=“value”、[at]attribue y=“value”、…-元素2[at]属性x=“值”,[at]属性y=“值”。。。我是否应该添加一个新的问题和这些影响,或者一个评论就足够了?我来这里的时间不长。再次感谢!最好提出一个新问题,更准确地说明您想要什么样的输出。通常给出一个输入和相应的期望输出就足以使一般需求变得清晰。
for $x in collection("XYZ")
let $att := local-name(//@*)
let $ele := local-name(//*)
let $eleatt := string-join($ele, $att)
return $eleatt