我有一大堆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}"
?或者有没有办法全局注入它?
答案 0 :(得分: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>