You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@locus.apache.org on 2000/08/15 21:39:36 UTC
cvs commit: xml-xalan/c/src/XSLT ElemLiteralResult.cpp
dbertoni 00/08/15 12:39:35
Modified: c/src/XSLT ElemLiteralResult.cpp
Log:
More efficient creation of result namespace.
Revision Changes Path
1.17 +33 -20 xml-xalan/c/src/XSLT/ElemLiteralResult.cpp
Index: ElemLiteralResult.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemLiteralResult.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ElemLiteralResult.cpp 2000/08/10 18:43:04 1.16
+++ ElemLiteralResult.cpp 2000/08/15 19:39:34 1.17
@@ -234,34 +234,47 @@
{
for (NamespaceVectorType::size_type i = 0; i < nsVector->size(); i++)
{
- NameSpace ns = (*nsVector)[i];
+ const NameSpace& ns = (*nsVector)[i];
- if(!isEmpty(ns.getURI()) && ns.getResultCandidate())
+ if(ns.getResultCandidate() == true)
{
- const bool hasPrefix = !isEmpty(ns.getPrefix());
+ const XalanDOMString& srcURI = ns.getURI();
- XalanDOMString prefix = hasPrefix ? ns.getPrefix() : XalanDOMString();
- XalanDOMString desturi = executionContext.getResultNamespaceForPrefix(prefix);
- XalanDOMString attrName = hasPrefix ?
- DOMServices::s_XMLNamespaceWithSeparator + prefix :
- DOMServices::s_XMLNamespace;
+ if (!isEmpty(srcURI))
+ {
+ const bool hasPrefix = !isEmpty(ns.getPrefix());
- XalanDOMString srcURI = ns.getURI();
+ const XalanDOMString prefix = hasPrefix ? ns.getPrefix() : XalanDOMString();
- const XalanDOMString alias = getStylesheet().getAliasNamespaceURI(srcURI);
+ XalanDOMString attrName;
- if (length(alias) != 0)
- {
- srcURI = alias;
- }
+ if (hasPrefix == true)
+ {
+ reserve(attrName, DOMServices::s_XMLNamespaceWithSeparatorLength + length(prefix) + 1);
- bool isXSLNS = equals(srcURI, executionContext.getXSLNameSpaceURL())
- || 0 != getStylesheet().lookupExtensionNSHandler(srcURI)
- || equals(srcURI,executionContext.getXalanXSLNameSpaceURL());
+ attrName += DOMServices::s_XMLNamespaceWithSeparator;
+ attrName += prefix;
+ }
+ else
+ {
+ attrName = DOMServices::s_XMLNamespace;
+ }
- if(!isXSLNS && !equals(srcURI, desturi)) // TODO: Check for extension namespaces
- {
- executionContext.addResultAttribute(attrName, srcURI);
+ const XalanDOMString alias = getStylesheet().getAliasNamespaceURI(srcURI);
+
+ const XalanDOMString& resultURI = length(alias) != 0 ? alias : srcURI;
+
+ const bool isXSLNS =
+ equals(resultURI, executionContext.getXSLNameSpaceURL()) ||
+ 0 != getStylesheet().lookupExtensionNSHandler(srcURI) ||
+ equals(resultURI, executionContext.getXalanXSLNameSpaceURL());
+
+ const XalanDOMString desturi = executionContext.getResultNamespaceForPrefix(prefix);
+
+ if(!isXSLNS && !equals(resultURI, desturi)) // TODO: Check for extension namespaces
+ {
+ executionContext.addResultAttribute(attrName, resultURI);
+ }
}
}
}