我有一個與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'。所以它不是真的幫助我,因爲有同樣的問題(我不能通過變量名稱調用模板)。在模板的情況下,我必須讓一個巨人選擇應用哪一個。這就是我現在正在使用屬性集所做的事情。至少它縮短了一些代碼。 :) 我想現在沒有真正的解決方法,但謝謝你的答案! –