在XPath中确定具有不存在的后续元素的元素?

时间:2016-09-21 17:57:40

标签: xml xpath

我有以下XML:

<li>angels</li>
<dt>Famous or respected graffiti artists who have died.</dt>

<li>PP</li>
<dt>Point to Point</dt>

<li>goodbye</li>

<li>Hello</li>
<dt>Alloo, say to people</dt>

我想找到每个单词的定义(如果存在)?

output:

  

[   (&#39;天使&#39;,&#39;已经去世的着名或受尊敬的涂鸦艺术家。&#39;),   (&#39; PP&#39;,&#39;点对点&#39;),   (&#39;再见&#39;,null),   (&#39;你好&#39;,&#39; Alloo,对人们说'#39;)   ]

  

[   (&#39;天使&#39;,&#39;已经去世的着名或受尊敬的涂鸦艺术家。&#39;),   (&#39; PP&#39;,&#39;点对点&#39;),   (&#39;你好&#39;,&#39; Alloo,对人们说'#39;)   ]

但问题是有时定义不存在,我想识别那些案例

我怎样才能使用XPath?

2 个答案:

答案 0 :(得分:2)

您可以查看第一个后续兄弟是否不是dt ...

//li[following-sibling::*[1][not(self::dt)]]

答案 1 :(得分:0)

在XSLT 2.0中,

<xsl:for-each-group select="*" group-starting-with="li">
  ...
</xsl:for-each-group>