Java 元素类型“META”必须由匹配的结束标记“”终止。使用XSL从XML文件生成PDF时

Java 元素类型“META”必须由匹配的结束标记“”终止。使用XSL从XML文件生成PDF时,java,html,xml,xslt-1.0,runtimeexception,Java,Html,Xml,Xslt 1.0,Runtimeexception,我正在尝试将XML转换为PDF文档。在使用XSL解析XML以生成HTML以创建PDF时。HTML不包含结束标记,因为我得到下面的错误 Exception in thread "main" org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException; lineNumber: 22; columnNumbe

我正在尝试将XML转换为PDF文档。在使用XSL解析XML以生成HTML以创建PDF时。HTML不包含结束标记,因为我得到下面的错误

 Exception in thread "main" org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException; lineNumber: 22; columnNumber: 3; The element type "META" must be terminated by the matching end-tag "</META>".
org.xhtmlrenderer.util这个名称向我暗示,您正在使用的库需要XHTML。您可以通过以下方式从XSLT转换中获得XHTML输出:

将其更改为使用XHTML输出方法而不是HTML

b将其更改为使用XSLT2.0处理器,如Saxon,因为要使用XHTML输出方法,需要XSLT2.0

更具体地说,是变化

TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource("xsl_html_pagebreak_a.xslt"));

或者,您可能会发现将序列化方法更改为xml也会起作用;在这种情况下,您不需要更改为XSLT2.0

TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource("xsl_html_pagebreak_a.xslt"));
TransformerFactory tFactory = new net.sf.saxon.TransformerFactoryImpl();
Transformer transformer = tFactory.newTransformer(new StreamSource("xsl_html_pagebreak_a.xslt"));
transformer.setOutputProperty("method", "xhtml");