我有一个像这样的XML部分:
<p><bold>Some Text</bold> some more content and text...</p>
或
<p>Some Text and something <bold>bold</bold> within and more content...</p>
我正在寻找一个XPath
表达式,只有当它是<bold>
中的第一个内容时才返回元素<p>
(如第一个示例中所示)并且如果那里没有返回任何内容标记前显示PCDATA
。
我可以使用p/bold[1]
,但会返回两个选项的结果。
我很感激任何建议!
答案 0 :(得分:1)
如果第一个子节点是p/node()[1][self::bold]
元素,您可以使用bold
选择它。
答案 1 :(得分:0)
您可以使用
//p/bold[1][not(preceding-sibling::node())]
对于所有p
元素,找到第一个bold
元素,只有它没有前兄弟 - 即没有PCDATA出现在它之前。
您还可以检查p
元素的第一个子节点,并检查它是否是bold
元素,如果有很多子节点,这可能会更快地执行:
//p/node()[1][name() = 'bold']