2009-07-30 21 views
25

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

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

を参照してください:あなたがXSLT 2.0へのアクセス権を持っているには十分に幸運なら、あなたはupper-case()機能を使用することができます

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

+0

[XSLTを使用して文字列を大文字または小文字に変換するにはどうすればよいですか?](http://stackoverflow.com/questions/586231/how-can-i-convert-a-string-to -upper-or-lower-case-with-xslt) – user

答えて

54

XSLT 2.0には、fn:upper-case()関数とfn:lower-case()関数があります。しかし、あなたはXSLT 1.0で使用している場合には、あなたは(翻訳を使用することができます):ケースを達成するために

<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

+1、それは私の答えと同じ戦略ですが、文字の変数を保持することは確かに再利用可能な解決策です。 – Welbog

+0

絶対に美しくて簡単です:) –

18

あなたは、XSLT 1.0でtranslate()機能を使用することができます詳細についてはXPath function reference pageをご覧ください。

+0

+1 ;-) – Tomalak

+3

Askerの名前はぼんやりと見えます...éはどうなりますか? (申し訳ありません、私は抵抗できませんでした) – AakashM

+0

@AakashM:それは 'translate()'関数の問題です。これらのすべてを自分で指定する必要があります。 'upper-case()'ははるかに優れたオプションですが、十分にサポートされていません。 – Welbog

3

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

-7

最も簡単かつクリーンな方法は、CSSによるものである変換します。

ビルドのようなクラス、:

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

それ:)

ます。また、使用することができます他の変換です:

.upper { text-transform: uppercase; } 

は、スパンクラスとしてクラスを使用します

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

私はOPがExcelファイルを作成していたと思います。 HTMLではありません。 –

+0

HTMLを使用してExcelファイルを作成できます。私はそれがCSSを称えると信じていますが、私は100%確実ではありません。 – iconoclast

+0

解決策では、ドキュメント内のテキスト要素の大文字と小文字を区別しない比較が許可されません。これは、テキストを強制的に単一の一貫性のあるケースに強制する理由です。この解決策は、結果の出力レンダリングにのみ適用されます。 – Pekka

2

U総会は次のようにSE:次のように

<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で使用することができます。

+0

ありがとう提案された編集内容 – SparrowEatsHawk

関連する問題