2013-09-25 2 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> 

вы должны получить, например, Jan, Feb, ....

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)) 
Смежные вопросы