2016-04-29 4 views
2

私は大文字小文字を区別しない一致が必要なXML「1.0」XSLT変換があります。 私は、「renamed_col」を「my_colを」名前を変更するには、以下の使用していますXSLT - 一致時に大文字小文字を区別しないでください。

<xsl:template match="my_col"> 
    <renamed_col> 
     <xsl:apply-templates select="@* | node()"/> 
    </renamed_col> 
</xsl:template> 

これは私が「my_col」を使用している場合は正常に動作しますが、私は「My_Col」を使用するときに失敗します。 大文字小文字に関係なく、この列に一致する必要があります。

ご協力いただければ幸いです。

答えて

1

Priyansh Goelさんによって与えられた答えは(記載以外の文字を使用する名前を持つ除く)すべての可能なケースのバリエーションをカバーします。しかし、あなたが期待するのかのバリエーションを知っていれば、あなたは、これは単純に(そして速い)作ることができ、それらを明示的にリストアップすることにより、例えば:

<xsl:template match="my_col | My_Col"> 
    <renamed_col> 
     <xsl:apply-templates select="@* | node()"/> 
    </renamed_col> 
</xsl:template> 
+0

解決していただきありがとうございます。しかし、私はソースXMLファイルを知らない。だから、可能なすべてのバリエーションを処理する方が良いでしょう。 – Tejal

2

はこれを試してみてください:

<xsl:template match="*[ translate(local-name(), 
             'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
             'abcdefghijklmnopqrstuvwxyz' 
             ) = 'my_col']"> 
+0

感謝..私は、これは出力から列を削除する代わりにされ – Tejal

+0

それをしようとします名前を変更する – Tejal

+0

列を削除するとどういう意味ですか? –