我有一个与xsl:use-attribute-sets有关的问题。 我想要具有可变属性集的元素。 例如:XSLT变量属性集
<fo:block xsl:use-attribute-sets="$variable">
</block>
此方法不起作用。 我尝试了一种解决方法,并得出结论,可以通过for-each来添加属性集的属性。 例如:
<fo:block>
<xsl:variable name="attributeSets" select="document('./document.xsl')//xsl:attribute-set"/>
<xsl:for-each select="$attributeSets[@name=$attributeSetName]/xsl:attribute">
<xsl:attribute name="@name" select="."/>
</xsl:for-each>
</fo:block>
这种方法允许我将属性添加到元素。问题是,如果某个属性包含一个xsl元素(如choose),则处理不当。
是否有可能像这样评估xslt代码?
属性集应该是这样的:
<xsl:attribute-set name="test">
<xsl:attribute name="font-size">
<xsl:choose>
<xsl:when test="condition">40pt</xsl:when>
<xsl:otherwise>20pt</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="text-align">right</xsl:attribute>
</xsl:attribute-set>
输出是:
<fo:block font-size="40pt20pt" font-weight="bold" text-align="right"/>
谢谢您的回答。你的第二种方法很有趣。尽管模板名称也必须是'QNames'。所以它不是真的帮助我,因为有同样的问题(我不能通过变量名称调用模板)。在模板的情况下,我必须让一个巨人选择应用哪一个。这就是我现在正在使用属性集所做的事情。至少它缩短了一些代码。 :) 我想现在没有真正的解决方法,但谢谢你的答案! –