使用docx4j解析某些XSL
XML文件时,我不断收到此错误:
‘The element type “img” must be terminated by the matching end-tag
"</img>"
. Exception Error in Docx4JException’
我已经尝试了各种各样的组合来解决这个问题但除了在img标签之间添加一些文本之外似乎没什么用处.我不希望文本显示.还有什么可以做的吗?
这是导致错误的xsl片段:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:prettyprint="http://xml.apache.org/xslt" xmlns:xalan="http://xml.apache.org/xalan" version="1.0"> <xsl:output method="html" /> <!-- Main entry template --> <xsl:template match="Email"> <html> <body> <img width="100" height="100" src="http://thumbs.dreamstime.com/x/sun-logo-6350903.jpg" border="0" class="MyImage" /> <div style="font-family:Verdana,Arial; font-size:9.5pt; font-weight:normal"> <xsl:variable name="PTPTotalAmt" select="Issue_PTPTotalAmount_C" /> <xsl:variable name="LetterDate" select="LetterDate" /> <xsl:variable name="LtrDate" select="substring($LetterDate,1,11)" /> <br> <xsl:text /> </br> <xsl:value-of select="Contact_Title_R" /> <xsl:text /> <xsl:value-of select="Contact_LastName_X" /> <br> <xsl:text /> </br> <xsl:value-of select="Contact_DispAddrLine1_X" /> <br> <xsl:text /> </br> <xsl:value-of select="Contact_DispAddrLine3_X" /> <br> <xsl:text /> </br> <xsl:value-of select="Contact_DispAddrLine4_X" /> <br> <xsl:text /> </br> <xsl:value-of select="Contact_DispAddrLine5_X" /> <br> <xsl:text /> </br> <xsl:value-of select="Contact_DispAddrPostCode_X" /> <br> <xsl:text /> </br> <xsl:text /> <xsl:text /> <xsl:value-of select="$LtrDate" /> </div> <br> <xsl:text /> </br> <br> <xsl:text /> </br> <br> <xsl:text /> </br> <br> <xsl:text /> </br> <div style="font-family:Verdana,Arial; font-size:8.5pt; font-weight:normal"> <br> <xsl:text>Address Here</xsl:text> </br> </div> </body> </html> </xsl:template> </xsl:stylesheet>
解决方法
将xsl:output元素更改为输出XML:
<xsl:output method="xml" indent="yes"/>
(缩进=“是”部分不是必需的,但有助于读取输出.)
如果xsl:output方法=“xml”单独更改不起作用,请尝试显式关闭img元素.因此,使用< img>< / img>而不是< img />
<img width="100" height="100" src="http://thumbs.dreamstime.com/x/sun-logo-6350903.jpg" border="0" class="MyImage"></img>
说明:HTML播放快速且松散的结束标记. docx4j的下游处理需要正确终止的元素,当您指定< xsl:output method =“xml”/>时,XSLT将生成正确终止的元素.