質問

私は利用しようと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's select 属性 既に受け入れを表現 しています。
  • 質問:ができないのはなぜでご利用 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"/> ?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top