我有以下xml内容:
<ns2:ItemAttributes xml:lang="de-DE">
<ns2:Creator Role="Role1">Creator One</ns2:Creator>
<ns2:Creator Role="Role2">Creator Two</ns2:Creator>
<ns2:Creator Role="Role3">Creator Three</ns2:Creator>
</ns2:ItemAttributes>
我尝试使用xpath将其格式化并合并为一行。 类似的东西:
string-join(//ns2:Creator/concat(./text(), @Role), ', ')
我想,我在某个地方很近,因为:
string-join(//ns2:Creator/@Role , ', ')
工作并给我一个以逗号分隔的角色列表:Role1,Role2,Role3
和这个
string-join(//ns2:Creator/node(), ', ')
结合了创作者的价值观:&#34;创作者1,创作者2,创作者3&#34;。
我喜欢
的最终输出Role1: Creator One, Role2: Creator Two, Role3: Creator Three
你能帮忙吗?
答案 0 :(得分:0)
您需要选择@Role
作为调用concat()
的第一个参数,并使用.
选择上下文节点的字符串值:
string-join($xml//ns2:Creator/concat(@Role, ': ', .), ', ')
您也可以使用.
或string()
代替string(.)
,这样可以明确隐含地发生转换:
string-join($xml//ns2:Creator/concat(@Role, ': ', string(.)), ', ')
返回:
Role1: Creator One, Role2: Creator Two, Role3: Creator Three