なぜ私XSLT変数を差し替えてます。
-
10-07-2019 - |
質問
私は利用しようとXSLT変数としない同意を得なければならない成功を願っと何か?
私は、以下のコードスニペット:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xslt"
version="1.0">
<xsl:template match="/">
<xsl:variable name="config" select="query/@config"></xsl:variable>
に期待したいがき変数'config'設定の値を'config'属性のトップレベルの要素'query'.
そして利用するようにして変数の後に私のスタイルシートは、例えば:
<a href="localhost/test?go">
{$config}
</a>
ですが、出力見て私の出力HTMLドキュメントは:
<a href="localhost/test?go">
{$config}
</a>
その値は置換されています。
と思うことなのですが、ここでは最も単純なケースが役割を果たすことができるようになっているdomethingね!を助けてください。
更新さった皆様、ありがとうござ回答して、誤解され、異なる文脈のかどうかで働いていました属性です。ソートマの問題を出す!
できれば私を受け入れられる"と"どちらかと言えば、私が最も気に入っていて、@(アーロンDigullaので、説明の属性というもの。
解決
おスタイルシートに使用す:
<xsl:value-of select="$config"/>
代わりに:
{$config}
他のヒント
あるご質問はここにも同じものは微妙に異なる:1) どのよう いい参照を可変するでしょうか。2) 場所 したいので参考に可変するでしょうか。
第一に、変数は、常に参照されるの $varname
構文です。第二に、これを行う どこにでも表現可能.この部分は、このような混乱.の値は、要素または属性にデフォルトの出力、文字通りでない変数は実際に参照するには、以下の例:
<element attr="$test">$test or {$test}</element>
になると出力は、文字通り一致した入力.
出力変数の値を参照での表現が可能です。要素の内容を使用していま xsl:value-of
;内の属性として扱われて 属性値テンプレート (例:の属性を文字通りの結果素子、表現をタブで区切って指定します。による巻きブレース {}
.と、以下の宣言:
<xsl:variable name="test" select="'value'"/>
...これにより,以下のような:
<element attr="{$test}"><xsl:value-of select="$test"/></element>
...このように表示されます:
<element attr="value">value</element>
少数のパーティング上の注意AVTsと value-of
:
- 両方の場合、変数参照として
$test
.のブレースのAVTの一部でない変数を参照彼らは表現の区切り文字. - どちらの場合でも、表現が必要となる参照変数;他のXPath表現されています。
- ないすべての属性は、XSLT文書として扱われの属性値テンプレート。例えば、知ること
xsl:value
'sselect
属性 既に受け入れを表現 しています。 質問:ができないのはなぜでご利用
value-of
に属性はこのような態度を取るのか。<element attr="<xsl:value-of select="$test"/>"/>
答え:なXSLTの文書が含まれている必要があ整形式XMLに(がん).
質問:ができないのはなぜでご利用
{$varname}
要素の内容の?ファイル回答:なXSLTのクリエイターなデザインすることができてうれしいです。
{$config}
における属性のXSLTます。(注:ドルのブレースが完全に次のように囲まなければいけませんによるブレース)
使用 <xsl:value-of select="$config"/>
の代わりに {$config}
.
@lwburkの答えは(+1)、最後の質疑応答が正のためのXSLT1.0および2.0にアクセスしてください。中3.0を使用できTVT(テキスト値テンプレート;類似のAVT(属性値テンプレート)@lwburkの解答).
利用TVT、追加の標準属性 xsl:expand-text="yes"
の要素となります。このプロセッサの処理その子孫のテキストノードの要素としてTVT.
例:
XSLT3.0
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="who" select="'Dan'"/>
<xsl:variable name="what" select="'BAM!'"/>
<result xsl:expand-text="yes">This is {$who}'s result: {$what}</result>
</xsl:template>
</xsl:stylesheet>
出力 (整形式XMLにて入力)
<result>This is Dan's result: BAM!</result>
注意:試用アングロサクソン-PE9.5.
する必要があるために使用 <xsl:value-of select="config"/>
?