我们有一个带有属性“style”的xml节点“item”,即“Header1”。然而,这种风格可以改变。我们有一个名为 Header1 的属性集,它定义了它在 PDF 中的外观,通过 xsl:fo 生成。
这有效(在 fo:table-cell 节点中内联提到了 use-attribute-sets):
<xsl:template match="item[@type='label']">
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="Header1">
<fo:block>
<fo:inline font-size="8pt" >
<xsl:value-of select="." />
</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
但这不是(使用 xsl:attribute,因为属性 @style 也可以是 Header2)。它不会产生错误,会创建 PDF,但不会应用属性。
<xsl:template match="item[@type='label']">
<fo:table-row>
<fo:table-cell>
<xsl:attribute name="xsl:use-attribute-sets">
<xsl:value-of select="@style" />
</xsl:attribute>
<fo:block>
<fo:inline font-size="8pt" >
<xsl:value-of select="." />
</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
有谁知道为什么?以及我们如何实现这一点,最好不要长 xsl:if 或 xsl:when 东西?