使用(假设初始上下文节点是div
元素的父级):
div/ul/li/span[not(strike)]
这将选择任何span
没有strike
子元素的元素(并且是 a 的子元素,它是li
a的子元素,是 a 的子元素,ul
是div
初始上下文节点的子元素)
并使用:
div/ul/li/span[strike]
这将选择任何span
具有strike
孩子的元素(并且是 a 的孩子li
,是 a 的孩子ul
,是div
a 的孩子,是初始上下文节点的孩子)
基于 XSLT 的验证:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select="div/ul/li/span[not(strike)]"/>
==============
<xsl:copy-of select="div/ul/li/span[strike]"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于提供的 XML 文档时:
<div class="availability">
Available:
<ul>
<li><span class="month available">March</span></li>
<li><span class="month unavailable"><strike>April</strike></span></li>
<li><span class="month unavailable"><strike>May</strike></span></li>
<li><span class="month unavailable"><strike>June</strike></span></li>
</ul>
</div>
计算两个 XPath 表达式并将结果(选定节点)复制到输出,由视觉上独特的分隔符字符串分隔:
<span class="month available">March</span>
==============
<span class="month unavailable">
<strike>April</strike>
</span>
<span class="month unavailable">
<strike>May</strike>
</span>
<span class="month unavailable">
<strike>June</strike>
</span>