1

データベースからパラメーターを取得しています

<xsl:param name="theMessage"></xsl:param>

以下のようなhtmlで引っ張られたデータ:

<style type="text/css">#container {width:100%; margin-top:20px; text-align:center; font-family: Verdana, arial; font-size:100%; font-weight:normal; }</style><div id="container"><b>Text here</b></div>

XSL:

<xsl:value-of select="$theMessage" disable-output-escaping="yes" />

また、目的の出力ではなく、コードとして表示されます。私がどこで間違っているのかについてのアイデアはありますか? それはxsl側ですか、それともデータベースなどにCDATAが必要ですか?

前もって感謝します。

4

2 に答える 2

2

要素をパラメーターとして渡す場合は、 xsl:value- ofではなくxsl:copy-ofを使用する必要があります。

<xsl:copy-of select="$theMessage" />

xsl:value-ofが行うのは、要素自体ではなく、要素のテキストを出力することだけです。

于 2012-10-31T18:51:13.020 に答える
0

過去に出力エスケープが機能していましたが、エスケープする必要がある ' マークがデータに含まれていたため、このデータ文字列では機能しませんでした。

そのため、文字列はそのままでした(Javaで)。

returnStr = returnStr.replace("'","\\'"); - this escaped those pesky tic marks, or single quotes

そして、returnStr は次のようになりました: <style type="text/css">#container {width:100%; margin-top:20px; text-align:center; font-family: Verdana, arial; font-size:100%; font-weight:normal; }</style><div id="container"><b>Text here</b></div>...さらに多くの html コードとテキスト

xsl パラメータは同じでした:

<xsl:param name="theMessage"></xsl:param>

スタイルシートでは、新しいコードは次のようになります。

<div id="bilbo"></div>
    <script type="text/javascript">
    var outputString = '<xsl:value-of select="$theMessage" />'
    document.getElementById('bilbo').innerHTML = outputString;
    </script>  

データベースからデータを取得し、一重引用符を取り除き、文字列を xsl パラメータに設定し、パラメータを js 変数に設定してから、必要な html として div 内に出力として配置しました。

于 2012-11-01T17:36:36.637 に答える