XSLTスタイルシートを使用して、XMLファイルからExcelドキュメントを作成しています。取得している値の1つを大文字で表示したい。これはどのようにして可能ですか?
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>
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関数リファレンスページ を参照してください。
XPath 2.0には fn:upper-case()
があり、Unicodeの正しい大文字小文字のマッピングも行います。
次のようなアセンブリを使用します。
_<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で使用できます。