【问题】
用docbook去编译pdf,结果出错:
SEVERE: Exception org.apache.fop.apps.FOPException: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) 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.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:501) at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:299) ... 3 more Caused by: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) at org.apache.fop.events.ValidationExceptionFactory.createException(ValidationExceptionFactory.java:38) at org.apache.fop.events.EventExceptionManager.throwException(EventExceptionManager.java:54) at org.apache.fop.events.DefaultEventBroadcaster$1.invoke(DefaultEventBroadcaster.java:175) at $Proxy3.missingChildElement(Unknown Source) at org.apache.fop.fo.FONode.missingChildElementError(FONode.java:549) at org.apache.fop.fo.flow.ListBlock.endOfNode(ListBlock.java:102) at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:349) at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:177) at org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1101) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at org.apache.xerces.xinclude.XIncludeHandler.emptyElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484) ... 4 more --------- javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:501) at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:299) 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: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) at org.apache.fop.events.ValidationExceptionFactory.createException(ValidationExceptionFactory.java:38) at org.apache.fop.events.EventExceptionManager.throwException(EventExceptionManager.java:54) at org.apache.fop.events.DefaultEventBroadcaster$1.invoke(DefaultEventBroadcaster.java:175) at $Proxy3.missingChildElement(Unknown Source) at org.apache.fop.fo.FONode.missingChildElementError(FONode.java:549) at org.apache.fop.fo.flow.ListBlock.endOfNode(ListBlock.java:102) at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:349) at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:177) at org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1101) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at org.apache.xerces.xinclude.XIncludeHandler.emptyElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484) ... 4 more --------- org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) at org.apache.fop.events.ValidationExceptionFactory.createException(ValidationExceptionFactory.java:38) at org.apache.fop.events.EventExceptionManager.throwException(EventExceptionManager.java:54) at org.apache.fop.events.DefaultEventBroadcaster$1.invoke(DefaultEventBroadcaster.java:175) at $Proxy3.missingChildElement(Unknown Source) at org.apache.fop.fo.FONode.missingChildElementError(FONode.java:549) at org.apache.fop.fo.flow.ListBlock.endOfNode(ListBlock.java:102) at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:349) at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:177) at org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1101) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at org.apache.xerces.xinclude.XIncludeHandler.emptyElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484) at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:299) 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) ../../../config/docbook.mk:383: recipe for target `../output/pdf/csharp_summary.pdf' failed make: *** [../output/pdf/csharp_summary.pdf] Error 1 CLi@PC-CLI-1 ~/develop/docbook/books/csharp_summary/src $
如图:
即
org.apache.fop.apps.FOPException: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ (See position 3570:289) |
【解决过程】
1.去对应fo文件中看看对应的内容是啥:
很明显,对应的fo:list-block的内容是空的,所以是不正常的。
2.所以,再去找到xml的源码中,看看对应的内容是啥:
<para>给TreeNode添加右键的总体的思路是:</para> <orderedlist> <itemizedlist>添加ContextMenuStrip </itemizedlist> <itemizedlist>在其下添加子菜单 </itemizedlist> <itemizedlist>实现ItemClicked事件,在其中判断点击了哪个子菜单,然后添加代码做你要做的事情即可。 <para></para> </itemizedlist> </orderedlist>
对此,参考之前自己的例子:
其写法是:
<orderedlist numeration="arabic"> <listitem>总的帧数:<para>VBR中的总的帧的数目。</para></listitem> <listitem>帧的采样个数:<para>对于MP3(MPEG1,Layer III)来说,是固定的1152个采样。</para></listitem> <listitem>帧的采样率:<para>通过解析第一帧,即可得知帧采样率索引,查表,即可得此采样率。</para></listitem> </orderedlist>
(以及:例 6.14. itemizedlist)
很明显可以看出问题是:
orderedlist其下,应该是listitem,而不是itemizedlist
itemizedlist是和orderedlist并列级别的,表示无序列表
3.所以,去改为:
<orderedlist numeration="arabic"> <listitem>添加ContextMenuStrip </listitem> <listitem>在其下添加子菜单 </listitem> <listitem>实现ItemClicked事件,在其中判断点击了哪个子菜单,然后添加代码做你要做的事情即可。 </listitem> </orderedlist>
再去编译试试,看看能否解决问题,结果就可以了:
Aug 20, 2013 12:55:29 PM org.apache.fop.fonts.truetype.TTFFile checkTTC INFO: Cambria Math <-- selected Aug 20, 2013 12:55:31 PM org.apache.fop.fonts.truetype.TTFFile checkTTC INFO: This is a TrueType collection file with 2 fonts Aug 20, 2013 12:55:31 PM org.apache.fop.fonts.truetype.TTFFile checkTTC INFO: Containing the following fonts: Aug 20, 2013 12:55:31 PM org.apache.fop.fonts.truetype.TTFFile checkTTC INFO: Cambria Aug 20, 2013 12:55:31 PM org.apache.fop.fonts.truetype.TTFFile checkTTC INFO: Cambria Math <-- selected CLi@PC-CLI-1 ~/develop/docbook/books/csharp_summary/src $
【总结】
此处docbook编译pdf(中间生成.fo文件)出现:
org.apache.fop.apps.FOPException: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+ |
的错误的:
原因是:
此处不小心,把orderedlist的子项,写成了itemizedlist
解决办法是:
把orderedlist的子项从itemizedlist改为listitem即可。
转载请注明:在路上 » 【已解决】Docbook编译pdf出错:org.apache.fop.apps.FOPException: org.apache.fop.fo.ValidationException: "fo:list-block" is missing child elements. Required content model: marker* (list-item)+