2016-05-18 6 views
0

xsl番号のカウント形式を使用するときに問題が残っています。それはzまで完全に動作します。シーケンスはaa、bb、ccになる必要があります... 代わりにaa、ab、ac ..です同じ結果が得られました。どのようにして、aa、ab、ac、の代わりにxslカウント出力をaa、bb、ccにすることができますか?

<xsl:variable name="name1"> 
    <xsl:number count="*" format="a"/> 
</xsl:variable> 

<xsl:variable name="name"> 
    <xsl:number count="*" format="aa"/> 
</xsl:variable> 
+0

XSLT 1.0または2.0を使用していますか?そして "zz"の後に何が来るべきですか?それは "aaa"ですか? –

+0

そのxslt 2.0。私はそれを今までに行く必要はないので、zz didntはそれを考えています。しかし、私はaaaが適切なやり方であると思います。 – Eugenios

答えて

1

私はあなたが、出力の種類を取得するためにxsl:numberで使用できる形式のトークンを知りません。

が短く方法があるかもしれませんが、ここで私はすぐに思いついた何か:


<xsl:variable name="i"> 
    <xsl:number count="*" /> 
</xsl:variable> 

<xsl:for-each select="0 to ($i - 1) idiv 26"> 
    <xsl:number value="($i - 1) mod 26 + 1" format="a"/> 
</xsl:for-each> 
はあなたがカウントしている正確に何によっては、あなたがこれを簡素化することができるかもしれません
<xsl:variable name="i" select="position() - 1"/> 

<xsl:for-each select="0 to $i idiv 26"> 
    <xsl:number value="$i mod 26 + 1" format="a"/> 
</xsl:for-each> 
+0

あなたの最初の方法は魅力のおかげです。 – Eugenios

+0

2番目の文字は、おそらく私のXMLが形式化されている方法のために2つの文字をスキップします。 – Eugenios

0

もう一つの方法は、二度に設定することです:

<fo:block letter-spacing="0.2pt"> 
    <xsl:number level="single" count="list-item" format="a"/> 
    <xsl:number level="single" count="list-item" format="a"/> 
</fo:block> 

非常にシンプルですが動作しているようです。

関連する問題