我想为我的 XSL 文件指定自己的标签,例如:因为我有许多用于样式的冗余块:
<fo:block font-weight="bold" margin-bottom="1cm" color="#424242"> ... </fo:block>
所以我想要的是把这个<fo:block>
元素放在一个更短的标签中,这样我就不需要一次又一次地写这个,并且只有一个简单的标签。
我现在用谷歌搜索了几个小时,找不到解决方案或说“不可能”的人。
我希望你能帮帮我!
我想为我的 XSL 文件指定自己的标签,例如:因为我有许多用于样式的冗余块:
<fo:block font-weight="bold" margin-bottom="1cm" color="#424242"> ... </fo:block>
所以我想要的是把这个<fo:block>
元素放在一个更短的标签中,这样我就不需要一次又一次地写这个,并且只有一个简单的标签。
我现在用谷歌搜索了几个小时,找不到解决方案或说“不可能”的人。
我希望你能帮帮我!
一个非常接近您想要的选项是使用xsl:attribute-set
例子:
<xsl:attribute-set name="headline">
<xsl:attribute name="font-weight" select="'bold'"/>
<xsl:attribute name="margin-bottom" select="'1cm'"/>
<xsl:attribute name="color" select="'#424242'"/>
</xsl:attribute-set>
<xsl:template match="foo">
<fo:block xsl:use-attribute-sets="headline">...</fo:block>
</xsl:template>
注意:如果您使用的是 XSLT 1.0,则不能select
在xsl:attribute
.
编辑:删除了我最初的错误假设
您可以将一个 XSLT 包含到另一个中。因此,如果您有许多共享某些定义的模板,请将所有共享定义放入一个共享模板中,并使用<xsl:include>
来引用共享模板。
信息include
XSLT 允许您将 XML 文档收集为树,然后将该树用作当前上下文。换句话说,您可以对正在使用的“宏”进行自己的预处理。
我建议你为你的宏创建一个命名空间,使调试过程更容易。