使用(假设初始上下文节点是div元素的父节点):
div/ul/li/span[not(strike)]
这会选择任何没有strike 子元素的span 元素(并且是li 的子元素,ul 的子元素是div 的子元素,即初始上下文节点的子节点)
并使用:
div/ul/li/span[strike]
这会选择任何具有strike 子代的span 元素(并且是li 的子代,ul 的子代,div 的子代,div 的子代初始上下文节点)
基于 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>