我的XML文件如下所示:
<platz>
<platzdesc>
<code>1</code>
<name>Alle</name>
</platzdesc>
<platzdesc>
<code>2</code>
<name>Gold</name>
</platzdesc>
</platz>
我需要编写XSLT文件来将此XML转换为3列输出。由于我不是很擅长XSLT,你可以帮助我,我已经尝试了各种各样的东西,但没有它们工作。输出不是HTML页面,而是PDF。
这是我到目前为止所尝试的内容:
<fo:block padding-before = "8pt" padding-start ="50pt">
<xsl:for-each select="root/platz/platzdesc">
<fo:block>
<xsl:value-of select="concat(code,' - ', name)" />
</fo:block>
</xsl:for-each>
</fo:block>
我正在制定更好的解决方案,但欢迎您的帮助。
答案 0 :(得分:3)
正如@Navin Ravat已经建议的那样,你可以使用一个表。
这是XSL-FO中表的一般结构:
<fo:table xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:table-column width="50mm"/>
<fo:table-column width="50mm"/>
<fo:table-column width="50mm"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block/>
</fo:table-cell>
<fo:table-cell>
<fo:block/>
</fo:table-cell>
<fo:table-cell>
<fo:block/>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
上面是一个只有一行的简单示例表,当然可以添加更多。现在,您必须将此结构合并到XSLT样式表中。例如,像这样:
<xsl:element name="fo:table">
<xsl:element name="fo:table-column">
<xsl:attribute name="width">50mm</xsl:attribute>
</xsl:element>
<xsl:element name="fo:table-column">
<xsl:attribute name="width">50mm</xsl:attribute>
</xsl:element>
<xsl:element name="fo:table-column">
<xsl:attribute name="width">50mm</xsl:attribute>
</xsl:element>
<xsl:element name="fo:table-body">
<xsl:element name="fo:table-row">
<xsl:element name="fo:table-cell">
<xsl:element name="fo:block">
<xsl:value-of select="platz/platzdesc[code=2]"/>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
答案 1 :(得分:-4)
经过许多痛苦之后,一种解决方案诞生了。享受!
ZOOM,请看看它!