XPath:コメントノード comment()

comment()・・・コンテキストノード内のコメントノード

(注意)preceding::comment()[3]は上から3番目ではない。コンテキストノード"私"からみて前方3番目にあるコメントを指す(サンプルXML文書では、結局最初のコメント)。

[サンプルXML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="xpath20.xsl"?>
<家系>
 <!--(コメント1)XPath:コメントノード comment()のテスト-->
 <!--(コメント2)家系図の始まり-->
 <叔父>叔父さん
  <従姉妹>叔父さんの娘</従姉妹>
 </叔父>
 <親>お父さんお母さん
  <!--(コメント3)”親”の子孫の始まり-->
  <姉>お姉さん
   <おい>お姉さんの息子</おい>
  </姉>
  <私>おいら
   <!--(コメント4)”私”が基点(コンテキストノード)-->
   <長男>長男
    <孫1>長男の娘
     <曾孫>長男の娘の子</曾孫>
    </孫1>
   </長男>
   <長女>長女
    <孫2>長女の息子</孫2>
   </長女>
   <次男>次男</次男>
   <!--(コメント5)ここまでが”私”の子孫(descendant)です-->
  </私>
  <弟>弟
   <めい>弟の娘</めい>
  </弟>
  <妹>妹</妹>
 <!--(コメント6)”親”の子孫の終わり-->
 </親>
 <叔母>叔母さん
<従兄弟>叔母さんの息子</従兄弟>
</叔母>
<!--(コメント7)家系図の終わり(2003/12/13)-->
</家系>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>

<xsl:template match="/">
<center><H3><xsl:value-of select="家系/comment()"/></H3></center>
<hr/>
XML文書に含まれる全コメント数は:<b><xsl:value-of select="count(//comment())"/></b>です<br/>
<xsl:apply-templates select="家系/親/私"/>
</xsl:template>

<xsl:template match="私">
<xsl:value-of select="comment()"/><br/>
<xsl:value-of select="comment()[2]"/><br/>
<xsl:value-of select="following::comment()[2]"/><br/>
<xsl:value-of select="preceding::comment()[3]"/><br/>
</xsl:template>
</xsl:stylesheet>

end(03/12/13)