我一直在使用fop 0.95从xml数据生成pdf文件。我在这个过程中涉及三个文件:test.xml,test.xsl和attributes.xsl。当然我在xml文件中有xml数据。这里test.xml是主要的xsl文件,它从attributes.xsl文件中导入属性集。例如,我在attributes.xsl文件中有以下条目:
<xsl:attribute-set name="headerTable" foa:class="table">
<xsl:attribute name="table-layout">fixed</xsl:attribute>
<xsl:attribute name="width">6.05in</xsl:attribute>
<xsl:attribute name="text-align">left</xsl:attribute>
<xsl:attribute name="white-space-collapse">false</xsl:attribute>
</xsl:attribute-set>
现在我的要求是将属性名称放在属性文件中,并将关联的值存储在xml文件中。这样:
<MyRoot>
<tableHeader>
<tableLayout>fixed</tableLayout>
<width>6.05in</width>
<textAlign>left</textAlign>
<whiteSpaceCollapse>false</whiteSpaceCollapse>
</tableHeader>
</MyRoot>
在此之后,我将拥有如下属性文件:
<xsl:attribute-set name="headerTable" foa:class="table">
<xsl:attribute name="table-layout">MyRoot/tableHeader/tableLayout</xsl:attribute>
<xsl:attribute name="width">MyRoot/tableHeader/width</xsl:attribute>
<xsl:attribute name="text-align">MyRoot/tableHeader/textAlign</xsl:attribute>
<xsl:attribute name="white-space-collapse">MyRoot/tableHeader/whiteSpaceCollapse</xsl:attribute>
</xsl:attribute-set>
像往常一样,我使用主xsl文件中的属性,如下所示:
<fo:table xsl:use-attribute-sets="headerTable">
<fo:table-column column-width="3in"></fo:table-column>
<fo:table-column column-width="3.5in"></fo:table-column>
<fo:table-body>
<!--table rows and cells goes here-->
</fo:table-body>
</fo:table>
执行时,我收到以下错误:
"Ignoring property: table-layout="MyRoot/tableHeader/tableLayout" <Illegal character; property:'table-layout'>"
有没有人知道如何做到这一点?感谢。
答案 0 :(得分:1)
在各种网站上游荡并且在这里没有回答问题时,我遇到了问题。在思考问题并进行命中和试验时,我只想说明这一行:
<xsl:attribute name="width">
<xsl:value-of select="MyRoot/tableHeader/width">
</xsl:value-of>
</xsl:attribute>
而不是属性文件中的以下内容:
<xsl:attribute name="width">MyRoot/tableHeader/width</xsl:attribute>
我为属性文件中放置的所有xml节点路径做了同样的事情。这太棒了!感谢。