2017-07-04 58 views
1

我試圖執行下面的代碼,但最終出現在下面的異常中。XSLT:SAXParseException:XML文檔結構必須在同一個實體內開始和結束

javax.xml.transform.TransformerConfigurationException:org.xml.sax.SAXParseException:XML文檔結構必須在同一個實體中開始和結束。

代碼是:

<xsl:when test="/result/DECODE='CANCELLED'"> 
    <xsl:variable name="match_dates" > 
     <xsl:for-each select="/legacyresult/*[starts-with(name(), 'END-DT')]"> 
      <xsl:sort data-type="number" 
         select="concat(substring(.,7, 4),substring(.,4, 2),substring(.,1, 2))" order="descending" /> 
      <xsl:variable name="end_dt" select="." /> 
      <xsl:variable name="match" select="count(/legacyresult/*[starts-with(name(), 'EFF-DT')][text()=$end_dt])" /> 
      <xsl:if test="$match=0" > 
       <xsl:value-of select="name(.)" /> 
       <xsl:text >,</xsl:text> 
      </xsl:if> 
     </xsl:for-each> 
    </xsl:variable> 
    <xsl:variable name="final_date" > 
     <xsl:value-of select="substring-before($match_dates, ',')" /> 
     <xsl:for-each select="/legacyresult/*[starts-with(name(), 'END-DT')][.=$final_date]"> 
      <xsl:sort select="substring(name(),13,2)" data-type="number"/> 
      <xsl:variable name="prodSeq" select="substring(name(),13,2)"/> 
      <xsl:variable name="id" select="position()"/> 
      <xsl:variable name="id">ID<xsl:value-of select="$sq"/> 
      </xsl:variable> 
      <xsl:element name="product"> 
       <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute> 
       <xsl:attribute name="productId">0<xsl:value-of select="/legacyresult/*[name() = $id]/."/></xsl:attribute> 
      </xsl:element> 
     </xsl:for-each> 
    </xsl:variable> 
</xsl:when> 

請讓我知道什麼是錯在上面的代碼。我已經交叉檢查了標籤。但我無法找到問題。

+0

是什麼讓你認爲問題出現在這段代碼中?大概這是作爲一些大文件的一部分存在的,因爲樣式表不能有''作爲它的最外層元素? –

回答

0

據我所看到的,您有以下錯誤:

 <xsl:variable name="id">ID<xsl:value-of select="$sq"/> 
     </xsl:variable> 

第一行有一個/末,使其成爲全方位的,但你也關閉可變標記,沒有按」從任何地方開始。刪除第一行的結束標記或結尾/

+0

這似乎是早期變量的結束標記,即最終日期。所以應該將移到適當的行。 – ophychius

+0

不是我如何看待它。在'final_date'裏面有'for-each'後。在'for-each'結束標記之後,'final_date'的'variable'被關閉。 – ar34z

相關問題