0

テキスト内のキーワードを強調するスタイルシートを書きたい。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <xsl:param name="keyword">keyword</xsl:param>
        <html>
            <body>
                <xsl:for-each select="element()">
                <xsl:variable name="elValue" select="."/>
                    <xsl:analyze-string select="upper-case(.)" regex="{upper-case($keyword)}*">
                        <xsl:matching-substring>
                            <i>
                                <xsl:value-of select="."/>
                            </i>
                        </xsl:matching-substring>
                        <xsl:non-matching-substring>
                            <xsl:value-of select="."/>
                        </xsl:non-matching-substring>
                    </xsl:analyze-string>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

正規表現を使用しました。

私の問題:html出力全体が大文字になりました。変数elValueを使用して元の値を保存しようとしましたが、機能しません。変数は、各ループに新しい値を追加しているようです(新しい値が含まれているだけではありません)。

要素の元の形式(大文字なし)を出力する方法はありますか?

前もって感謝します、

4

1 に答える 1

1

http://www.w3.org/TR/xslt20/#analyze-stringieiでフラグを使用することもできます。

                <xsl:analyze-string select="." regex="{$keyword}*" flags="i">
                    <xsl:matching-substring>
                        <i>
                            <xsl:value-of select="."/>
                        </i>
                    </xsl:matching-substring>
                    <xsl:non-matching-substring>
                        <xsl:value-of select="."/>
                    </xsl:non-matching-substring>
                </xsl:analyze-string>
于 2012-11-07T16:22:07.177 に答える