XSLT样式表:将文本更改为大写

时间:2009-07-30 14:46:58

标签: xslt coding-style uppercase

我正在使用XSLT样式表从XML文件创建Excel文档。我要提取的其中一个值我希望显示为大写。这怎么可能?

5 个答案:

答案 0 :(得分:55)

XSLT 2.0有fn:upper-case()和fn:lower-case()函数。但是,如果您使用的是XSLT 1.0,则可以使用translate():

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

答案 1 :(得分:18)

您可以在XSLT 1.0中使用translate()函数:

<xsl:value-of select="translate(//some-xpath,
                                'abcdefghijklmnopqrstuvwxyz',
                                'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />

如果您足够幸运能够访问XSLT 2.0,则可以使用upper-case()函数:

<xsl:value-of select="upper-case(//some-xpath)"/>

有关详细信息,请参阅XPath function reference page

答案 2 :(得分:3)

XPath 2.0具有fn:upper-case(),它也可以执行Unicode正确的大小写映射。

答案 3 :(得分:2)

使用这样的程序集:

<msxsl:script implements-prefix="user" language="C#">
<!--{%assembly%}-->
<![CDATA[  

public string ToUpper(string stringValue)
{
    string result = String.Empty;

    if(!String.IsNullOrEmpty(stringValue))
    {
      result = stringValue.ToUpper(); 
    }

    return result;
}
]]>
</msxsl:script>

按以下方式调用:select="user:ToUpper(//root/path)"

这可以在1.0或2.0中使用。

答案 4 :(得分:-7)

实现案例转换的最简单,最简洁的方法是使用CSS。

建立一个类,如:

.upper { text-transform: uppercase; }

然后将该类用作span类:

<span class="upper">
    <xsl:value-of select="myTextField" />
</span>

就是这样:))

您还可以使用其他变换:

text-transform:  capitalize | uppercase | lowercase | none | inherit