position() uden for-each
Man ser ofte dette (eller tilsvarende) eksempel på brugen af position():<xsl:for-each select="catalog/cd">
<xsl:value-of select="title"/>
<xsl:if test="position() < last()-1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test="position()=last()-1">
<xsl:text>, and </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text>!</xsl:text>
</xsl:if>
</xsl:for-each>
Men kan man gøre noget lignende uden for-each, f.eks.:
<xsl:template match="item">
[...]
<xsl:if test="editor">
<xsl:text>udgivet af </xsl:text>
<xsl:value-of select="editor"/>
<xsl:if test="position()=last()-1">
<xsl:text> og </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:if>
[...]
</xsl:template>
Vil parseren vide at position() går på elementet "editor" og ikke på andre afkom af elementet "item"?
//mik