dbertoni    2004/04/06 11:38:30

  Modified:    c/src/xalanc/XSLT Stylesheet.cpp
  Log:
  Fixed import precedence problem with xsl:strip/preserve-space.
  
  Revision  Changes    Path
  1.11      +28 -4     xml-xalan/c/src/xalanc/XSLT/Stylesheet.cpp
  
  Index: Stylesheet.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/Stylesheet.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Stylesheet.cpp    6 Apr 2004 00:15:36 -0000       1.10
  +++ Stylesheet.cpp    6 Apr 2004 18:38:29 -0000       1.11
  @@ -470,14 +470,17 @@
   void
   Stylesheet::postConstruction(StylesheetConstructionContext&          
constructionContext)
   {
  +     KeyDeclarationVectorType::size_type                     
theKeyDeclarationsCount = 0;
  +     WhitespaceElementsVectorType::size_type         
theWhitespaceElementsCount = 0;
  +
        {
                m_importsSize = m_imports.size();
   
  -             // Call postConstruction() on any imported stylesheets, the get 
things
  -             // in reverse order, to preserve import precedence. Also, get 
any key
  +             // Call postConstruction() on any imported stylesheets, in 
reverse order,
  +             // so namespace aliases are processed properly. Also, get any 
key
                // declarations and preserve/strip space information.
                const StylesheetVectorType::reverse_iterator    theEnd = 
m_imports.rend();
  -             StylesheetVectorType::reverse_iterator  i = m_imports.rbegin();
  +             StylesheetVectorType::reverse_iterator                  i = 
m_imports.rbegin();
   
                while(i != theEnd)
                {
  @@ -485,6 +488,27 @@
   
                        
m_namespacesHandler.copyNamespaceAliases((*i)->getNamespacesHandler());
   
  +                     theKeyDeclarationsCount += 
(*i)->m_keyDeclarations.size();
  +                     theWhitespaceElementsCount += 
(*i)->m_whitespaceElements.size();
  +
  +                     ++i;
  +             }
  +     }
  +
  +     {
  +             // Call postConstruction() on any imported stylesheets, in 
import order,
  +             // and process preserve/strip space information.
  +             const StylesheetVectorType::iterator    theEnd = 
m_imports.end();
  +             StylesheetVectorType::iterator                  i = 
m_imports.begin();
  +
  +             m_keyDeclarations.reserve(
  +                     m_keyDeclarations.size() + theKeyDeclarationsCount);
  +
  +             m_whitespaceElements.reserve(
  +                     m_whitespaceElements.size() + 
theWhitespaceElementsCount);
  +
  +             while(i != theEnd)
  +             {
                        m_keyDeclarations.insert(
                                m_keyDeclarations.end(),
                                (*i)->m_keyDeclarations.begin(),
  @@ -718,7 +742,7 @@
                {
                        // This is an error...
                        constructionContext.error(
  -                             
XalanMessageLoader::getMessage(XalanMessages::LastFoundStylesheetWillBeUsed),
  +                             
XalanMessageLoader::getMessage(XalanMessages::StylesheetHasDuplicateNamedTemplate),
                                0,
                                theTemplate);
                }
  
  
  

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

Reply via email to