2008年2月14日作成
XPathすごいね
データを扱うものなのに検索ができないのはおかしいと思って 調べてみると、XSLTそのものではなく、 そこから派生したXPathを使うようです。
XPathなしで最新10件抽出
これはAtomとXSLTと名前空間(2) と同じですね。1点バグがあったので修正したものを再掲。
<xsl:template match="atom:feed">
<div id="main">
<xsl:apply-templates select="atom:entry/atom:content"/>
</div>
</xsl:template>
<xsl:template match="atom:content">
<xsl:variable name="n">
<xsl:number level="any"/>
</xsl:variable>
<xsl:if test="$n <= 10">
<xsl:copy-of select="xhtml:html/xhtml:body"/>
</xsl:if>
</xsl:template>
XPathを使って、最新10件抽出
XPathは、"atom:entry[ ... ]"のところですね。
<xsl:template match="atom:feed">
<div id="main">
<xsl:apply-templates
select="atom:entry[position() <= 10]/atom:entry"/>
</div>
</xsl:template>
<xsl:template match="atom:content">
<xsl:copy-of select="xhtml:html/xhtml:body"/>
</xsl:template>
必要ない変数($n)を書かなくてよくなっていたり、やってることが (XPathを使わない版に比べて)直接的に書けたりなどなど、 すごく便利です。entry[:10]くらいまで省略して書けたらいいなあ。。