我正在尝试使用 apache-fop 从以下命令生成 pdf。
C:\fop-1.0-bin\fop-1.0>fop -xml sample1.xml -xsl xsl-fo.xsl -pdf sample2.pdf
我的 xml 看起来像这样
<?xml version="1.0" encoding="iso-8859-1"?>
<service>
<serviceId>11111</serviceId>
<openDate>2012-02-16</openDate>
<closeDate>2012-02-16</closeDate>
<description>INSPECT MACHINE</description>
<repairCost>$266.76</repairCost>
</service>
我的 xsl-fo xslt 文件看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
>
<xsl:output encoding="iso-8859-1" />
<xsl:template match ="Service">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="Service">
<fo:region-body></fo:region-body>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="Service">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:table>
<fo:table-body>
<fo:table-row>
<fo:table-cell border="solid 1px black"
text-align="center" font-weight="bold">
<fo:block>Service Id</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black"
text-align="center" font-weight="bold">
<fo:block>Open Date</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black"
text-align="center" font-weight="bold">
<fo:block>Close Date</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black"
text-align="center" font-weight="bold">
<fo:block>Order Status</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black"
text-align="center" font-weight="bold">
<fo:block>Description</fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px black"
text-align="center" font-weight="bold">
<fo:block>Repair Cost</fo:block>
</fo:table-cell>
</fo:table-row>
<xsl:for-each select="./servicetype">
<fo:table-row>
<fo:table-cell border="solid 1px bold" text-align="center">
<fo:block><xsl:value-of select="serviceId" /></fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px bold" text-align="center">
<fo:block><xsl:value-of select="openDate" /></fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px bold" text-align="center">
<fo:block><xsl:value-of select="closeDate" /></fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px bold" text-align="center">
<fo:block><xsl:value-of select="description" /></fo:block>
</fo:table-cell>
<fo:table-cell border="solid 1px bold" text-align="center">
<fo:block><xsl:value-of select="repairCost" /></fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
我收到错误。有人可以指出我在代码中的错误。我正在关注这个例子http://www.codeproject.com/Articles/37663/PDF-Generation-using-XSLFO-and-FOP
SEVERE: org.apache.fop.fo.ValidationException: Document is empty (something migh
t be wrong with your XSLT stylesheet).
Dec 3, 2012 4:27:27 PM org.apache.fop.cli.Main startFOP
SEVERE: Exception
javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException:
Document is empty (something might be wrong with your XSLT stylesheet).
at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:302)
at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:130)
at org.apache.fop.cli.Main.startFOP(Main.java:174)
at org.apache.fop.cli.Main.main(Main.java:205)
Caused by: javax.xml.transform.TransformerException: org.apache.fop.fo.Validatio
nException: Document is empty (something might be wrong with your XSLT styleshee
t).
at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme
rImpl.java:1430)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
l.java:709)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
l.java:1284)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
l.java:1262)
at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:299)
... 3 more
Caused by: org.apache.fop.fo.ValidationException: Document is empty (something m
ight be wrong with your XSLT stylesheet).
at org.apache.fop.events.ValidationExceptionFactory.createException(Vali
dationExceptionFactory.java:38)
at org.apache.fop.events.EventExceptionManager.throwException(EventExcep
tionManager.java:54)
at org.apache.fop.events.DefaultEventBroadcaster$1.invoke(DefaultEventBr
oadcaster.java:175)
at $Proxy0.emptyDocument(Unknown Source)
at org.apache.fop.fo.FOTreeBuilder.endDocument(FOTreeBuilder.java:158)
at org.apache.xml.serializer.ToXMLSAXHandler.endDocument(ToXMLSAXHandler
.java:181)
at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme
rImpl.java:1378)
... 7 more