• 締切済み

■XSLT■固定文字を使ったループ処理について(サンプルのイメージソースあり)

いつも勉強させていただいております。 今回は質問をさせていただけないでしょうか。 それでは、よろしくお願いします。 下記のような感じで、アルファベット一文字づつ処理をしたいと思っています。 このような、処理はできますでしょうか? XMLにa-zの文字を入れておいて、各ノードのループで処理をすれば可能かと思いますが、 XMLが変えられないので、それ以外の方法を考えています。 下記はイメージですから、動作はしません。 <xsl:for-each select="'abcdefghijklmnopqrstuvwxyz'"> <!-- 下記により一文字づつ処理をする --> <xsl:call-template name="PutAlphabetHref" > <xsl:with-param name="sAlpha" select="substring(........)" /> </xsl:call-template> </xsl:for-each>

みんなの回答

回答No.1

この結果がどうなるか考えると面白いかも。 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/*"> <hoge> <xsl:call-template name="stringiteration"> <xsl:with-param name="current" select="'abcdefghijklmnopqrstuvwxyz'" /> </xsl:call-template> </hoge> </xsl:template> <xsl:template name="stringiteration"> <xsl:param name="current" /> <fuga><xsl:value-of select="substring($current,1,1)" /></fuga> <xsl:if test="string-length($current) > 1"> <xsl:call-template name="stringiteration"> <xsl:with-param name="current" select="substring($current,2)" /> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet> <!-- XSLTの変数は同じ変数に何度も代入できないから再帰をうまく使う。-->

関連するQ&A