web-dev-qa-db-ja.com

XSLTスタイルシート:テキストを大文字に変更する

XSLTスタイルシートを使用して、XMLファイルからExcelドキュメントを作成しています。取得している値の1つを大文字で表示したい。これはどのようにして可能ですか?

25
Charmiane

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>
55

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関数リファレンスページ を参照してください。

19
Welbog

XPath 2.0には fn:upper-case() があり、Unicodeの正しい大文字小文字のマッピングも行います。

3
Tomalak

次のようなアセンブリを使用します。

_<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で使用できます。

2
SparrowEatsHawk