2013-09-25 19 views
0

假設我有一組個月的大寫字母:在XSLT 1.0中,我怎樣才能將整個單詞大寫的首字母大寫?

<months> 
    <month name="JAN"/> 
    <month name="FEB"/> 
    <month name="MAR"/> 
    <month name="APR"/> 
    <month name="MAY"/> 
    <month name="JUN"/> 
    <month name="JUL"/> 
    <month name="AUG"/> 
    <month name="SEP"/> 
    <month name="OCT"/> 
    <month name="NOV"/> 
    <month name="DEC"/> 
</months> 

我怎樣才能利用第一個字母?

這是我現在的解決方案,但我使用CSS來利用它。我想看看它如何在純XSLT完成1.0

<xsl:template match="months"> 
    <xsl:variable name="month" select="month/@name"/>  
    <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> 
    <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
    <xsl:variable name="monthFormatted"><xsl:value-of select="translate($month, $uppercase, $smallcase)" /></xsl:variable> 
</xsl:template> 

/* CSS */ 
.months { 
    text-transform: capitalize; 
} 

回答

2

好與

<xsl:param name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> 
<xsl:param name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'"/> 

<xsl:template match="month"> 
    <xsl:value-of select="concat(substring(@name, 1, 1), translate(substring(@name, 2), $uppercase, $lowercase))"/> 
</xsl:template> 

你應該得到如JanFeb,....

3

提供屬性:使用 - 屬性集

<xsl:template match="months" xsl:use-attribute-sets="style" > 

添加樣式:

<xsl:attribute-set name="style"> 
     <xsl:attribute name="text-transform">capitalize</xsl:attribute> 
</xsl:attribute-set> 
1

好解決

concat(translate(substring($Name, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring($Name,2,string-length($Name)-1)) 
相關問題