25

我正在使用 XSLT 样式表从 XML 文件创建 Excel 文档。我想要显示为大写的值之一。这怎么可能?

4

5 回答 5

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>
于 2009-07-30T14:54:40.017 回答
20

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

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

如果您有幸能够访问 XSLT 2.0,则可以使用以下upper-case()功能:

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

有关更多详细信息,请参阅XPath 函数参考页面

于 2009-07-30T14:49:38.137 回答
3

XPath 2.0 具有fn:upper-case()Unicode 正确大小写映射。

于 2009-07-30T14:52:41.377 回答
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 中使用。

于 2017-10-13T16:18:44.477 回答
-7

实现大小写转换的最简单和最简洁的方法是通过 CSS。

建立一个类,如:

.upper { text-transform: uppercase; }

然后将该类用作跨度类:

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

就是这样 :)

您还可以使用其他转换:

text-transform:  capitalize | uppercase | lowercase | none | inherit
于 2011-12-01T10:35:26.007 回答