[
http://issues.apache.org/jira/browse/XALANC-609?page=comments#action_12367097 ]
David Bertoni commented on XALANC-609:
--------------------------------------
It's amazing we haven't hit this bug before, since it's been in the processor
for years.
I think the best fix is to add a static instance of an empty list, then convert
the assert to an actual if test:
#if defined(XALAN_OLD_STYLE_CASTS)
if (DOMServices::isNamespaceDeclaration((const XalanAttr&)theNode) ==
true)
#else
if ((DOMServices::isNamespaceDeclaration(static_cast<const
XalanAttr&>(theNode)) == true)
#endif
{
return &s_emptyTemplateList;
}
We'll also have to filter out the namespace nodes in
ElemTemplateElement::findTemplateToTransformChild():
case XalanNode::CDATA_SECTION_NODE:
case XalanNode::TEXT_NODE:
theTemplate =
getStylesheet().getStylesheetRoot().getDefaultTextRule();
break;
case XalanNode::ATTRIBUTE_NODE:
if (DOMServices::isNamespaceDeclaration(static_cast<const
XalanAttr&>(*child)) == false)
{
theTemplate =
getStylesheet().getStylesheetRoot().getDefaultTextRule();
}
break;
This is a potential performance issue, and points out why we shouldn't be using
attributes to represent namespace nodes. It's just another one of the many
issues with representing the source tree as an instance of the DOM.
> Template with built-in template rules for namespaces gives and assert
> ---------------------------------------------------------------------
>
> Key: XALANC-609
> URL: http://issues.apache.org/jira/browse/XALANC-609
> Project: XalanC
> Type: Bug
> Components: XalanC
> Versions: CurrentCVS
> Environment: all
> Reporter: Dmitry Hayes
> Fix For: CurrentCVS
>
> Stylesheet:
> <xsl:template match="/">
> <out>
> <xsl:apply-templates select="//namespace::*"/>
> </out>
> </xsl:template>
> and an input document:
> <?xml version="1.0"?>
> <doc xmlns="default.uri">
> <!--Comment 1-->
> <item xmlns:one="http://one.org" xmlns:two="http://two.org">
> <inner>Some text <!--Comment 3-->
> <sub-inner xmlns:one="http://example.org"/>
> </inner>
> </item>
> <item/>
> <item></item>
> </doc>
> Gives :
> Assertion failed: DOMServices::isNamespaceDeclaration(static_cast<const
> XalanAtt
> r&>(theNode)) == false, file \src\xalanc\Xslt\Stylesheet.cpp, line 1093
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]