2013-03-01 50 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> 
相关问题