I'm a new Xalan-J user trying (unsuccessfully) to switch over to XSLTC from 
an older version of Xalan.  I'm accessing XSLTC via the JSP <x:transform> 
tag.  My previously working application (under the old Xalan) is failing in 
a peculiar way that appears to be some sort of memory related issue that 
somehow seems to also be related to the complexity of my XSL templates.

I've been trying to create a simple test case, but the error goes away as I 
reduce the complexity of the templates.  The XSLT runs to completion but 
produces incorrect results.  When I set a variable to a sequence of XML 
statements, then immediately attempt to output these results via an 
<xsl:message> via <xsl:copy-of>, rather than spitting out the correct 
nodes, it produces text that, strangely, appears as part of my own code 
elsewhere in my templates.  The lines that demonstrate that something is 
wrong (although they don't seem to be the cause of the problem)

...
    <xsl:variable name="attributes" >
      <outer-level>
        <inner-level>foo</inner-level>
      </outer-level>
    </xsl:variable>

    <xsl:message>
      <xsl:copy-of select="nodeset($attributes)" />
    </xsl:message>
...
At first, I thought it was a problem with the nodeset function, but after 
trying to isolate the bug, it appears to go away when I eliminate some 
imported templates.  I've actually created a test case where I can 
eliminate the problem by removing 3 lines of meaningless code (creation of 
an empty variable) that appear _after_ the code above.  In other words, 
template code is altering the results of code which is executed before it.

It seems that if the templates are too complex, my stack or memory or 
something gets corrupted.  I have no knowledge of the implementation 
details so can only guess.

I noticed that there is some discussion of a 64K limit (wow that's small) 
that gets overwhelmed when XSL templates are inlined during compilation. 
 This seems relevant; however, I've also found two conflicting mentions of 
this on xml.apache.org, one which says that inlining is "on" by default and 
the other which says it is "off".  I downloaded xsltc only two days ago so 
assume I'm using the most recent versison.  If I need to turn this off, how 
do I do this so that JSP pages calls to <x:transform> have this parameter 
set (presumably a line in a .properties file somewhere?)

If the current default is already "off", does anyone have any suggestions 
as to how to debug/work-around this?  I'm stuck and will have to go back to 
old Xalan if I can't find a solution.

Thanks (particularly to the developers)

Mark


Reply via email to