6

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>
4

3 に答える 3

5

xsl:outputXML を出力するように要素を変更します。

<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 は高速で緩い wrt 終了タグを再生します。docx4jによる下流の処理では適切に終了した要素が必要であり、XSLT は を指定すると適切に終了した要素を生成します<xsl:output method="xml"/>

于 2013-11-06T14:39:43.277 に答える