なんか今日3時間ぐらい考えてた。
xsl:for-eachで決まった数のブロック毎に親ノードを追加する方法。
帰りに自転車こいでる時にふとおもいついて帰って書いてみたらうまくいったので覚え書き。
<xsl:for-each select="./section/box[position() mod 2 = 1]">
<xsl:variable name="p"><xsl:value-of select="position()"/></xsl:variable>
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="./image" />
</xsl:attribute>
</xsl:element>
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="../box[position()=$p+$p]/image" />
</xsl:attribute>
</xsl:element>
</xsl:for-each>
ループする毎に加算される値はないものかと、いろいろ調べてたんだけど、たしかにposition自体が加算されるのは自明の理。けっこう入門書に書いてあるような代入なのに、いやーまったく気づかなかった。