DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=29411>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=29411 XSLTC generates uneccessary preifix/URI mappings to serializer Summary: XSLTC generates uneccessary preifix/URI mappings to serializer Product: XalanJ2 Version: CurrentCVS Platform: Other OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: org.apache.xalan.xsltc AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] The serializer presumes that a prefix mapping on a parent element automatically is inherited by a child element. It is redundant to keep telling the serializer about all namespace mappings at each element. Consider this stylesheet: ... <xsl:template match="/"> <elem0 xmlns:foo0="baseuri0"> <elem1 xmlns:foo1="baseuri1"> <elem2 xmlns:foo2="baseuri2"> </elem2> </elem1> </elem0> </xsl:template> ... The code generated by XSLTC for the translet looks like this: ------------------------------------------- serializationhandler.startElement("elem0"); serializationhandler.namespaceAfterStartElement("foo0", "baseuri0"); serializationhandler.startElement("elem1"); serializationhandler.namespaceAfterStartElement("foo1", "baseuri1"); serializationhandler.namespaceAfterStartElement("foo0", "baseuri0"); serializationhandler.startElement("elem2"); serializationhandler.namespaceAfterStartElement("foo2", "baseuri2"); serializationhandler.namespaceAfterStartElement("foo1", "baseuri1"); serializationhandler.namespaceAfterStartElement("foo0", "baseuri0"); endElement(); // elem2 endElement(); // elem1 endElement(); // elem0 --------------------------------------------- There would be less code generated and it would run faster if the code generated were like this: ------------------------------------------- serializationhandler.startElement("elem0"); serializationhandler.namespaceAfterStartElement("foo0", "baseuri0"); serializationhandler.startElement("elem1"); serializationhandler.namespaceAfterStartElement"foo1", "baseuri1"); serializationhandler.startElement("elem2"); serializationhandler.namespaceAfterStartElement("foo2", "baseuri2"); endElement(); // elem2 endElement(); // elem1 endElement(); // elem0 --------------------------------------------- These are internal calls between XSLTC and the serializer, not a public API, but these changes could be made to make things run faster. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
