a
どの要素のテキストの子も正しく生成されないため、現在受け入れられている回答は正しくありません。
正しい XSLT 1.0 ソリューションは次のとおりです。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vAlpha" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:template match="/">
<xsl:call-template name="alphabet"/>
</xsl:template>
<xsl:template name="alphabet">
<xsl:param name="pCode" select="65"/>
<xsl:if test="not($pCode > 90)">
<xsl:variable name="vChar" select=
"substring($vAlpha, $pCode - 64, 1)"/>
<a href="req.html?X_letter={$vChar}">
<xsl:value-of select="$vChar"/>
</a>
<xsl:call-template name="alphabet">
<xsl:with-param name="pCode" select="$pCode+1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
任意の XML ドキュメント (使用されていない) に適用すると、必要な正しい結果が生成されます。
<a href="req.html?X_letter=A">A</a>
<a href="req.html?X_letter=B">B</a>
<a href="req.html?X_letter=C">C</a>
<a href="req.html?X_letter=D">D</a>
<a href="req.html?X_letter=E">E</a>
<a href="req.html?X_letter=F">F</a>
<a href="req.html?X_letter=G">G</a>
<a href="req.html?X_letter=H">H</a>
<a href="req.html?X_letter=I">I</a>
<a href="req.html?X_letter=J">J</a>
<a href="req.html?X_letter=K">K</a>
<a href="req.html?X_letter=L">L</a>
<a href="req.html?X_letter=M">M</a>
<a href="req.html?X_letter=N">N</a>
<a href="req.html?X_letter=O">O</a>
<a href="req.html?X_letter=P">P</a>
<a href="req.html?X_letter=Q">Q</a>
<a href="req.html?X_letter=R">R</a>
<a href="req.html?X_letter=S">S</a>
<a href="req.html?X_letter=T">T</a>
<a href="req.html?X_letter=U">U</a>
<a href="req.html?X_letter=V">V</a>
<a href="req.html?X_letter=W">W</a>
<a href="req.html?X_letter=X">X</a>
<a href="req.html?X_letter=Y">Y</a>
<a href="req.html?X_letter=Z">Z</a>
Ⅱ.XSLT 2.0 ソリューション:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="my:my" exclude-result-prefixes="xs my"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output omit-xml-declaration="yes" method="xhtml" indent="yes"/>
<xsl:param name="pStart" as="xs:integer" select="65"/>
<xsl:param name="pEnd" as="xs:integer" select="90"/>
<xsl:variable name="vCodes" as="xs:integer*" select=
"for $i in $pStart to $pEnd
return $i
"/>
<xsl:template match="/">
<html>
<xsl:sequence select="my:alphabet()"/>
</html>
</xsl:template>
<xsl:function name="my:alphabet" as="element()*">
<xsl:for-each select="$vCodes">
<xsl:variable name="vChar" select="codepoints-to-string(.)"/>
<a href="req.html?X_letter={$vChar}">
<xsl:sequence select="$vChar"/>
</a>
</xsl:for-each>
</xsl:function>
</xsl:stylesheet>