使用(最初のコンテキストノードがdiv
要素の親であると想定):
div/ul/li/span[not(strike)]
span
これにより、子を持たない要素が選択されますstrike
(そして、最初のコンテキストノードの子であるaの子であるli
aul
の子であるaの子です)div
そして使用:
div/ul/li/span[strike]
これによりspan
、子を持つ要素が選択されますstrike
(そして、最初のコンテキストノードの子であるaの子であるli
aul
の子であるaの子です)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>
2つの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>