xslt和xpath:匹配前面的注释

mia*_*eck 7 xslt xpath

给出这个xml:

<root>
    <list>
        <!-- foo's comment -->
        <item name="foo" />
        <item name="bar" />
        <!-- another foo's comment -->
        <item name="another foo" />
    </list>
</root>
Run Code Online (Sandbox Code Playgroud)

我想使用XPath来选择有评论紧接所有这些项目节点,这是我喜欢选择"foo"和"另一个foo"的项目,但不是"栏"项.

我已经摆弄了前兄弟轴和comment()函数,但无济于事.

Kev*_*eid 3

这似乎有效:

//comment()/following-sibling::*[1]/self::item
Run Code Online (Sandbox Code Playgroud)

它会查找紧随其后的注释的兄弟姐妹,这些兄弟姐妹也是<item>元素。我不知道有什么更好的方式来表达这个::*[1]/self::item丑陋的部分;请注意,如果它被写入::item[1],那么它也会发现<item>s 没有立即被注释处理。