У нас есть xml-узел "item" с атрибутом "style", который является "Header1". Однако этот стиль может измениться. У нас есть набор атрибутов с именем Header1, который определяет, как это должно выглядеть в PDF, сгенерированном с помощью xsl: fo.
Это работает (наборы атрибутов использования упоминаются inline, в узле fo: table-cell):
<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 stuff?