You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2003/08/07 14:15:30 UTC
DO NOT REPLY [Bug 22210] New: -
failed assertion during stylesheet compile (Stylesheet.cpp, line #803)
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: xalan-dev@xml.apache.org
ReportedBy: mark@npsl.co.uk
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