XPath将每个父元素的所有子元素分组

时间:2014-03-09 12:44:09

标签: xml xpath

我必须显示每本书的所有语言。我很困惑如何做到这一点。 我不想在 / books / book / translation 中显示每种语言,但我想将它们分组到每本书中,类似于 / books / book / title ,但仅限于翻译必须显示。所以基本上我将每本书的翻译分组。

<books>
    <book>
        <title>Book One</title>
        <translation edition="3">Greek</translation>
        <translation edition="2">Chinese</translation>
        <translation edition="2">French</translation>
        <translation edition="1">Dutch</translation>
   </book>
   <book>
        <title>Book Two</title>
        <translation edition="2">Dutch</translation>
        <translation edition="4">Chinese</translation>
        <translation edition="2">Greek</translation>
        <translation edition="3">Spanish</translation>
    </book>
</books>

谢谢,抱歉,如果我的格式错误了。 XPath表达式的结果应该是两个结果。 第一个结果:

Greek
Chinese
French
Dutch

第二个结果:

Dutch
Chinese
Greek
Spanish

我希望这会详细阐述一些。

1 个答案:

答案 0 :(得分:0)

以下XPath将为您提供两个项目的序列,每个项目将包含每本书籍的翻译,翻译以逗号分隔:

for $book in //book
return
    string-join($book/translation, ",")

这导致:

希腊,中国,法国,荷兰 荷兰,中国,希腊,西班牙

那是你在寻找什么?如果是这样,一旦你理解了上面的XPath,你实际上可以将它缩短为:

//book/string-join(translation, ",")