DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6782>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6782 xalan output content lost when templates called include copy-of Summary: xalan output content lost when templates called include copy-of Product: XalanJ2 Version: 2.0.0 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Major Priority: Other Component: org.apache.xalan AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Xalan transform fails to produce its output when the marked template 'breakMe' is included. This all works as expected in 2.2.D14, but fails in 2.3. Also, the problem seems to lie in having several templates using copy-of. In trying to reproduce a simple test case, I also had out of memory and null pointer exceptions, where uncontrolled recursion appears to have occured. <?xml version="1.0" ?> <screen> <list> <item code="1"></item> <item code="2"></item> <item code="3"></item> </list> </screen> <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output encoding="iso-8859-1"/> <!-- main template to produce screen --> <xsl:template match="screen"> <xsl:call-template name="template1" /> </xsl:template> <xsl:template name="template1"> <xsl:call-template name="copier"> <xsl:with-param name="content"> <!-- comment this out and the display works when breakMe template is still there --> <xsl:call-template name="template2"/> <xsl:call-template name="listTemplate"/> </xsl:with-param> </xsl:call-template> </xsl:template> <!-- NB Can remove the nested call-template and also works when breakMe template present ... --> <xsl:template name="template2"> <xsl:call-template name="copier"> <xsl:with-param name="content"> <xsl:call-template name="template3"/> </xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="template3"> template3 </xsl:template> <!-- generate list. --> <xsl:template name="listTemplate"> *** FULL LIST *** <xsl:call-template name="listItems"/> </xsl:template> <!-- NB This is where the program can all go wrong --> <xsl:template name="listItems"> <xsl:for-each select="/screen/list/item"> hi <!-- put this template in, content (hi, lo, and FULL LIST) is lost ... comment it out and it works --> <xsl:call-template name="breakMe"/> bye </xsl:for-each> </xsl:template> <xsl:template name="breakMe"> broken </xsl:template> <xsl:template name="copier"> <xsl:param name="content"></xsl:param> <xsl:copy-of select="$content"/> </xsl:template> </xsl:stylesheet>
