用分号分隔的有序 XPath 值

Ordered XPath values separated by a semicolon

我有以下 XML 文件:

<Body>
    <ELEMENT Property1="A" Property2="B" Property3="C"/>
    <ELEMENT Property1="D" Property2="E" Property3="F"/>
    <ELEMENT Property1="G" Property2="H" Property3="I"/>
</Body>

我正在尝试让一个字符串对象的所有属性值按如下顺序排列:

A,B,C;D,E,F;G,H,I

我基本上需要用分号分隔每个 ELEMENT 属性。

怎么做?

你可以试试下面的表达式

string-join((string-join(//ELEMENT/@Property1, ','), string-join(//ELEMENT/@Property2, ','), string-join(//ELEMENT/@Property3, ',')), ';')

输出:

A,D,G;B,E,H;C,F,I

string-join((string-join(//ELEMENT[1]/@*, ','), string-join(//ELEMENT[2]/@*, ','), string-join(//ELEMENT[3]/@*, ',')), ';')

输出:

A,B,C;D,E,F;G,H,I

由于我想在属性之间设置 ,,在元素之间设置 ;,因此这是未定义数量的元素所需的解决方案:

string-join(for $x in //ELEMENT return string-join($x/@*,','), ';')

结果是

A,B,C;D,E,F;G,H,I