dbertoni    01/05/11 11:17:05

  Modified:    c/src/XSLT ElemLiteralResult.cpp ElemLiteralResult.hpp
                        NamespacesHandler.cpp NamespacesHandler.hpp
  Log:
  Make sure the NamespacesHandler knows which prefixes are being used, so that 
it emits the appropriate namespace declarations (lre10).
  
  Revision  Changes    Path
  1.35      +30 -2     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.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- ElemLiteralResult.cpp     2001/04/30 18:12:49     1.34
  +++ ElemLiteralResult.cpp     2001/05/11 18:16:33     1.35
  @@ -197,6 +197,34 @@
   
   
   void
  +ElemLiteralResult::postConstruction(const NamespacesHandler& 
theParentHandler)
  +{
  +     // OK, now check all attribute AVTs to make sure
  +     // our NamespacesHandler knows about any prefixes
  +     // that will need namespace declarations...
  +     const AVTVectorType::size_type  nAttrs = m_avts.size();
  +
  +     for(AVTVectorType::size_type i = 0; i < nAttrs; ++i)
  +     {
  +             const AVT* const        avt = m_avts[i];
  +
  +             const XalanDOMString&   theName = avt->getName();
  +
  +             const unsigned int      theColonIndex = indexOf(theName, 
XalanUnicode::charColon);
  +
  +             if (theColonIndex != length(theName))
  +             {
  +                     m_namespacesHandler.addActivePrefix(substring(theName, 
0, theColonIndex));
  +             }
  +     }
  +
  +     // OK, now we can chain-up...
  +     ElemUse::postConstruction(theParentHandler);
  +}
  +
  +
  +
  +void
   ElemLiteralResult::execute(StylesheetExecutionContext&               
executionContext) const
   {
        executionContext.startElement(c_wstr(getElementName()));
  @@ -215,7 +243,7 @@
                XalanDOMString&         thePrefix = theGuard1.get();
                XalanDOMString&         theStringedValue = theGuard2.get();
   
  -             for(AVTVectorType::size_type i = 0; i < nAttrs; i++)
  +             for(AVTVectorType::size_type i = 0; i < nAttrs; ++i)
                {
                        const AVT* const        avt = m_avts[i];
   
  @@ -236,7 +264,7 @@
                                        theStringedValue) == false)
                        {
                                executionContext.addResultAttribute(
  -                                             avt->getName(), 
  +                                             theName, 
                                                theStringedValue);
                        }
   
  
  
  
  1.19      +3 -0      xml-xalan/c/src/XSLT/ElemLiteralResult.hpp
  
  Index: ElemLiteralResult.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemLiteralResult.hpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ElemLiteralResult.hpp     2001/03/09 16:20:01     1.18
  +++ ElemLiteralResult.hpp     2001/05/11 18:16:38     1.19
  @@ -104,6 +104,9 @@
        virtual const XalanDOMString&
        getElementName() const;
   
  +     virtual void
  +     postConstruction(const NamespacesHandler&       theParentHandler);
  +
        virtual bool
        isAttrOK(
                        int                                             tok,
  
  
  
  1.8       +11 -0     xml-xalan/c/src/XSLT/NamespacesHandler.cpp
  
  Index: NamespacesHandler.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/NamespacesHandler.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- NamespacesHandler.cpp     2001/02/09 19:22:31     1.7
  +++ NamespacesHandler.cpp     2001/05/11 18:16:41     1.8
  @@ -83,6 +83,7 @@
        m_namespaceDeclarations(),
        m_extensionNamespaceURIs(),
        m_namespaceAliases(),
  +     m_activePrefixes(),
        m_processAliases(true)
   {
   }
  @@ -97,6 +98,7 @@
        m_namespaceDeclarations(),
        m_extensionNamespaceURIs(),
        m_namespaceAliases(),
  +     m_activePrefixes(),
        m_processAliases(true)
   {
        // Go through the namespaces stack in reverse order...
  @@ -149,6 +151,7 @@
        m_namespaceDeclarations(theSource.m_namespaceDeclarations),
        m_extensionNamespaceURIs(theSource.m_extensionNamespaceURIs),
        m_namespaceAliases(theSource.m_namespaceAliases),
  +     m_activePrefixes(theSource.m_activePrefixes),
        m_processAliases(theSource.m_processAliases)
   {
   }
  @@ -326,6 +329,9 @@
        processNamespaceAliases();
   
        createResultAttributeNames();
  +
  +     // We don't need these any more...
  +     m_activePrefixes.clear();
   }
   
   
  @@ -447,6 +453,8 @@
        m_extensionNamespaceURIs.clear();
   
        m_namespaceAliases.clear();
  +
  +     m_activePrefixes.clear();
   }
   
   
  @@ -461,6 +469,8 @@
        m_extensionNamespaceURIs.swap(theOther.m_extensionNamespaceURIs);
   
        m_namespaceAliases.swap(theOther.m_namespaceAliases);
  +
  +     m_activePrefixes.swap(theOther.m_activePrefixes);
   }
   
   
  @@ -543,6 +553,7 @@
                        // We can never exclude the prefix of our owner 
element, so
                        // check that first...
                        if (equals(thePrefix, theElementPrefix) == false &&
  +                             m_activePrefixes.find(thePrefix) == 
m_activePrefixes.end() &&
                                (m_excludedResultPrefixes.find(thePrefix) != 
m_excludedResultPrefixes.end() ||
                                 m_extensionNamespaceURIs.find(theURI) != 
m_extensionNamespaceURIs.end()))
                        {
  
  
  
  1.6       +18 -0     xml-xalan/c/src/XSLT/NamespacesHandler.hpp
  
  Index: NamespacesHandler.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/NamespacesHandler.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- NamespacesHandler.hpp     2001/01/30 22:02:22     1.5
  +++ NamespacesHandler.hpp     2001/05/11 18:16:45     1.6
  @@ -178,6 +178,9 @@
   
        typedef set<XalanDOMString,
                                less<XalanDOMString> >                          
        ExtensionNamespaceURISetType;
  +
  +     typedef set<XalanDOMString,
  +                             less<XalanDOMString> >                          
        ActivePrefixesSetType;
   #else
        typedef std::map<XalanDOMString, XalanDOMString>        
ExcludedResultPrefixesMapType;
   
  @@ -187,6 +190,8 @@
        typedef std::map<XalanDOMString, XalanDOMString>        
NamespaceAliasesMapType;
   
        typedef std::set<XalanDOMString>                                        
ExtensionNamespaceURISetType;
  +
  +     typedef std::set<XalanDOMString>                                        
ActivePrefixesSetType;
   #endif
   
        /**
  @@ -323,6 +328,17 @@
        }
   
        /**
  +      * Add a prefix to the list of active prefixes.
  +      *
  +      * @param thePrefix The prefix that is active and requires a namespace 
declaration.
  +      */
  +     void
  +     addActivePrefix(const XalanDOMString&   thePrefix)
  +     {
  +             m_activePrefixes.insert(thePrefix);
  +     }
  +
  +     /**
         * Copy the aliases from the given NamespacesHandler.
         *
         * @param parentNamespacesHandler The parent handler.
  @@ -437,6 +453,8 @@
        ExtensionNamespaceURISetType    m_extensionNamespaceURIs;
   
        NamespaceAliasesMapType                 m_namespaceAliases;
  +
  +     ActivePrefixesSetType                   m_activePrefixes;
   
        // If true namespace aliases will be processed.  If false, they will 
not.
        bool                                                    
m_processAliases;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to