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);
  +					}
   				}
   			}
   		}