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=22210>.
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=22210

failed assertion during stylesheet compile (Stylesheet.cpp, line #803)

           Summary: failed assertion during stylesheet compile
                    (Stylesheet.cpp, line #803)
           Product: XalanC
           Version: 1.6
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: XalanC
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Code that asserts:

const ElemTemplate*Code that asserts:

const ElemTemplate*
Stylesheet::findNamedTemplate(const XalanQName&         qname) const
{
        assert(m_importsSize == m_imports.size());


This is a bit tricky to explain, the setup is that I have:

top-level stylesheet:
        <xsl:import href="b.xsl"/>
        <xsl:import href="a.xsl"/>

a.xsl:
        <xsl:import href="c.xsl"/>
        <xsl:template name="foobar" match="nud">
                <xsl:call-template name="foobar">
        </xsl:template>
        
b.xsl:
        <xsl:template match="/">
                <xsl:call-template name="foobar"/>
        </xsl:template>
        
c.xsl:
        <xsl:template match="/"/>

What happens is that b is postConstructed first (although from the comments 
in the post construction code, it looks like it should be last?).  When the
call-template element in b is constructed, then it winds up calling
findNamedTemplate() in a.xsl.  postConstruct() has not yet been called on
a, so the assertion triggers (correctly, since if the template foobar was
pushed down into c.xsl i guess it would not be found).

I'm unsure as to how to correct this -- but I think that you should either
get an error from the compile; or no assertion.  Any pointers?

Thanks,

Mark

Reply via email to