2013-03-01 49 views
1

我有一大套XSLT模板,可以生成包含各種內容的<div>元素。匹配看起來像這些:是否可以向文字結果元素添加屬性?

<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}"?或者有沒有辦法在全球注入?

回答

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> 
相關問題