2012-04-16 12 views
-1

を見ることができない私のような定義された親スタイルシートがあります。XSLT:親スタイルシートをインポートし、子スタイルシートが、子が親の変数

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:import href="external/webcommon/WebappTransform.xsl" /> 
    <xsl:variable name="webAppFinalName">rf</xsl:variable> 
</xsl:stylesheet>` 

をインポートしたスタイルシートWebappTransform.xslは、いくつかのインラインCSSが特定のテンプレートの中に含まれて含まれています

@import url("/{$webAppFinalName}/external/webcommon/css/print.css"); 

変換はJavaサーブレットフィルタ内で行われ、出力HTMLは正確には見えませんが、最終結果から変数が正しく挿入されていないことは明らかです。

私が手動で変数を挿入し、完全なXSLを試してみると、すべて正常です。

ここで間違っていることを教えてください。多くのオンラインリソースに相談すると、このアプローチが有効であることが示唆されます。

誠にありがとうございます。

答えて

1

http://www.w3.org/TR/xslt#importによると、任意の「XSL:import要素のみがトップレベルの要素として許されるのxsl:import要素の子は、XSLの他のすべての要素の子を前になければなりません:stylesheet要素」xsl:importの前xsl:variableとスニペットそうではあり間違った順序で、私はXSLTプロセッサがエラーメッセージを発生させることを期待します。

+0

- 順序が私のコードで正しいです。私は私のOPを改訂しました。 – KomodoDave

0

この:

@import url("/{$webAppFinalName}/external/webcommon/css/print.css"); 

は単なる文字列です。変換中に変数の置換は行われません。

代わりにこれを試してみてください:

実際に私の部分に貼り付けエラーです
<xsl:value-of select="concat('@import url(&quot;/', $webAppFinalName, 
        '/external/webcommon/css/print.css&quot;);')"/> 
+0

mzjnありがとう、明日の仕事でこれを試してみて、返信します:) – KomodoDave

+0

私の提案はうまくいきましたか? – mzjn

+0

それはできませんでした。私はトランスフォームをどのように使用するか(サーブレットフィルタでは、javaxトランスフォームを使用して適用される)、またはそれ自体が間違っているかどうかはわかりません。私はあなたが正しいと確信していると確信していますが(!)しかし、私はプロジェクトの変更をいくつか追加して来週これをやり直していきます。 – KomodoDave