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

Reply via email to