2

要素内の変数を属性として出力する方法はありますか?

サンプルxml:

<list>
<name>John Doe</name>
<name>Paul Niel</name>
<name>Luke Dee</name>
</list>

これが私のサンプル xslt です。

<xsl:variable name="isDisabled">
    <xsl:if test="name='John Doe'">
        <xsl:attribute name="disabled">disabled</xsl:attribute>
    </xsl:if>
</xsl:variable>

そして、このように isDisabled 変数を出力したいと思います。

<input id="textName" name="name" type="text" {$isDisabled} />

出力;

<input id="textName" name="name" type="text" disabled="disabled" />
4

1 に答える 1

1

このタスクを実行するために変数は必要ありません

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="name[. = 'John Doe']">
  <input id="textName" name="name" type="text" disabled="disabled" />
 </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>

この変換が提供されたXMLドキュメントに適用される場合

<list>
    <name>John Doe</name>
    <name>Paul Niel</name>
    <name>Luke Dee</name>
</list>

必要な正しい結果が生成されます。

<input id="textName" name="name" type="text" disabled="disabled"/>

説明

テンプレートの適切な使用とテンプレートパターンマッチング。

注:属性を作成するために変数を使用することが本当に必要な場合(これではない)、これは次の方法で実行できます。

<input id="textName" name="name" type="text" disabled="{$isDisabled}"/>

説明

AVTの適切な使用(属性値テンプレート

于 2012-06-21T03:18:43.360 に答える