“img”必须由匹配的end-tag终止

问题描述 投票:5回答:3

使用docx4j解析某些XSL XML文件时,我不断收到此错误:

'元素类型“img”必须由匹配的结束标记"</img>"终止。 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>
xml xslt xslt-1.0 docx4j
3个回答
4
投票

xsl:output元素更改为输出XML:

<xsl:output method="xml" indent="yes"/>

indent="yes"部分不是必需的,但有助于阅读输出。)

如果单独更换xsl:output method="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将生成正确终止的元素。


3
投票

如果你想添加图片,并且经常要求关闭标签,你就像这样写:

<img src="abc"/>

0
投票

这个有效!!简单地将结束标记添加到Img标记中

<img src=""/>
© www.soinside.com 2019 - 2024. All rights reserved.