1

<div>さまざまなコンテンツを含む要素を生成する XSLT テンプレートの大きなセットがあります。一致は次のようになります。

<xsl:template match="block[@name = 'block_blah']">
    <div>
       blah
       <div>foooo</div>
    </div>
</xsl:template>

<xsl:template match="block[@name = 'block2']">
    <div>
       <div>xyz</div>
       abc
    </div>
</xsl:template>

すべての最初のレベルに属性を追加する必要があります<div>。したがって、出力は次のようになります。

    <div data-blockname="block_blah">
       blah
       <div>foooo</div>
    </div>

    <div data-blockname="block2">
       <div>xyz</div>
       abc
    </div>

data-blockname="{@name}"すべての場合に手動で挿入する必要がありますか? または、それをグローバルに注入する方法はありますか?

4

1 に答える 1

1

あなたが言うように、これを「グローバルに」行う方法はありませんが、次のように、XSLT を再構築して繰り返しを避ける方法があります。

<xsl:template match="block[@name]">
    <div name="{@name}">
      <xsl:apply-templates select="." mode="content" />
    </div>
<xsl:template>

<xsl:template match="block[@name = 'block_blah']" mode="content">
       blah
       <div>foooo</div>
</xsl:template>

<xsl:template match="block[@name = 'block2']" mode="content">
       <div>xyz</div>
       abc
</xsl:template>
于 2013-03-01T12:46:59.187 に答える