dbertoni    2003/12/28 17:25:52

  Modified:    c/Projects/Win32/VC6/AllInOne AllInOne.dsp
                        AllInOneWithICU.dsp
               c/src/xalanc/XSLT ElemExtensionCall.cpp ElemFallback.cpp
                        StylesheetConstructionContext.hpp
                        StylesheetConstructionContextDefault.cpp
                        StylesheetConstructionContextDefault.hpp
                        StylesheetHandler.cpp
  Log:
  Fix for forward-compatible processing.  See conformance test ver08.
  
  Revision  Changes    Path
  1.44      +8 -0      xml-xalan/c/Projects/Win32/VC6/AllInOne/AllInOne.dsp
  
  Index: AllInOne.dsp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/Projects/Win32/VC6/AllInOne/AllInOne.dsp,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- AllInOne.dsp      29 Dec 2003 00:26:53 -0000      1.43
  +++ AllInOne.dsp      29 Dec 2003 01:25:52 -0000      1.44
  @@ -3350,5 +3350,13 @@
   SOURCE=..\..\Res\AllInOne\resource.h
   # End Source File
   # End Group
  +# Begin Source File
  +
  +SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.cpp
  +# End Source File
  +# Begin Source File
  +
  +SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.hpp
  +# End Source File
   # End Target
   # End Project
  
  
  
  1.41      +8 -0      
xml-xalan/c/Projects/Win32/VC6/AllInOne/AllInOneWithICU.dsp
  
  Index: AllInOneWithICU.dsp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/Projects/Win32/VC6/AllInOne/AllInOneWithICU.dsp,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- AllInOneWithICU.dsp       29 Dec 2003 00:26:53 -0000      1.40
  +++ AllInOneWithICU.dsp       29 Dec 2003 01:25:52 -0000      1.41
  @@ -3422,5 +3422,13 @@
   SOURCE=..\..\..\..\src\xalanc\XercesParserLiaison\XercesWrapperTypes.hpp
   # End Source File
   # End Group
  +# Begin Source File
  +
  +SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.cpp
  +# End Source File
  +# Begin Source File
  +
  +SOURCE=..\..\..\..\src\xalanc\XSLT\ElemForwardCompatible.hpp
  +# End Source File
   # End Target
   # End Project
  
  
  
  1.4       +3 -1      xml-xalan/c/src/xalanc/XSLT/ElemExtensionCall.cpp
  
  Index: ElemExtensionCall.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/ElemExtensionCall.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemExtensionCall.cpp     2 Dec 2003 19:58:54 -0000       1.3
  +++ ElemExtensionCall.cpp     29 Dec 2003 01:25:52 -0000      1.4
  @@ -97,8 +97,10 @@
   
   
   void
  -ElemExtensionCall::execute(StylesheetExecutionContext&               
executionContext) const
  +ElemExtensionCall::execute(StylesheetExecutionContext&       
executionContext) const
   {
  +     ElemTemplateElement::execute(executionContext);
  +
        executionContext.warn( 
                
XalanMessageLoader::getMessage(XalanMessages::XalanHandleExtensions),
                0,
  
  
  
  1.5       +22 -1     xml-xalan/c/src/xalanc/XSLT/ElemFallback.cpp
  
  Index: ElemFallback.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/ElemFallback.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ElemFallback.cpp  4 Dec 2003 21:47:45 -0000       1.4
  +++ ElemFallback.cpp  29 Dec 2003 01:25:52 -0000      1.5
  @@ -133,7 +133,28 @@
   {
        ElemTemplateElement::execute(executionContext);
   
  -     executeChildren(executionContext);
  +     int             thePreviousToken = 
StylesheetConstructionContext::ELEMNAME_UNDEFINED;
  +
  +     for (const ElemTemplateElement* child = getFirstChildElem(); child != 
0; child = child->getNextSiblingElem())
  +     {
  +             const int       theCurrentToken = child->getXSLToken();
  +
  +             if(theCurrentToken == 
StylesheetConstructionContext::ELEMNAME_FALLBACK)
  +             {
  +                     // Don't execute a fallback if it's preceeded by a 
forward-compatible
  +                     // element.
  +                     if (thePreviousToken != 
StylesheetConstructionContext::ELEMNAME_FORWARD_COMPATIBLE)
  +                     {
  +                             child->execute(executionContext);
  +                     }
  +             }
  +             else
  +             {
  +                     child->execute(executionContext);
  +             }
  +
  +             thePreviousToken = theCurrentToken;
  +     }
   }
   
   
  
  
  
  1.3       +10 -3     
xml-xalan/c/src/xalanc/XSLT/StylesheetConstructionContext.hpp
  
  Index: StylesheetConstructionContext.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetConstructionContext.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StylesheetConstructionContext.hpp 19 Sep 2003 20:33:04 -0000      1.2
  +++ StylesheetConstructionContext.hpp 29 Dec 2003 01:25:52 -0000      1.3
  @@ -181,6 +181,11 @@
                // element.
                ELEMNAME_TEXT_LITERAL_RESULT,
   
  +             // This one doesn't really have a name.
  +             // It's used for forward-compatible
  +             // processing.
  +             ELEMNAME_FORWARD_COMPATIBLE,
  +
                // Extension handling.
                ELEMNAME_EXTENSION_CALL,
                ELEMNAME_EXTENSION_HANDLER
  @@ -665,10 +670,11 @@
                        const LocatorType*                      locator = 0) = 
0;
   
        /**
  -      * Create a literal result element. The instance owns the
  -      * memory and will delete the element when it goes out of
  -      * scope and the containing stylesheet is destroyed.
  +      * Create a elements which have specific names. The instance
  +      * owns the memory and will delete the element when it goes
  +      * out of scope and the containing stylesheet is destroyed.
         *
  +      * @param token The enum value of the element to create.
         * @param stylesheetTree The stylesheet containing the element
         * @param name The name of the element
         * @param atts The list of attributes for the element
  @@ -678,6 +684,7 @@
         */
        virtual ElemTemplateElement*
        createElement(
  +                     int                                                     
token,
                        Stylesheet&                                     
stylesheetTree,
                        const XalanDOMChar*                     name,
                        const AttributeListType&        atts,
  
  
  
  1.6       +28 -1     
xml-xalan/c/src/xalanc/XSLT/StylesheetConstructionContextDefault.cpp
  
  Index: StylesheetConstructionContextDefault.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetConstructionContextDefault.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StylesheetConstructionContextDefault.cpp  2 Dec 2003 19:58:54 -0000       
1.5
  +++ StylesheetConstructionContextDefault.cpp  29 Dec 2003 01:25:52 -0000      
1.6
  @@ -93,6 +93,7 @@
   #include "ElemDecimalFormat.hpp"
   #include "ElemExtensionCall.hpp"
   #include "ElemFallback.hpp"
  +#include "ElemForwardCompatible.hpp"
   #include "ElemForEach.hpp"
   #include "ElemIf.hpp"
   #include "ElemMessage.hpp"
  @@ -971,6 +972,7 @@
   
   ElemTemplateElement*
   StylesheetConstructionContextDefault::createElement(
  +                     int                                                     
token,
                        Stylesheet&                                     
stylesheetTree,
                        const XalanDOMChar*                     name,
                        const AttributeListType&        atts,
  @@ -979,13 +981,38 @@
        const XalanLocator::size_type   lineNumber = 
XalanLocator::getLineNumber(locator);
        const XalanLocator::size_type   columnNumber = 
XalanLocator::getColumnNumber(locator);
   
  -     return m_elemLiteralResultAllocator.create(
  +     ElemTemplateElement*    theElement = 0;
  +
  +     if (token == ELEMNAME_LITERAL_RESULT)
  +     {
  +             theElement = m_elemLiteralResultAllocator.create(
  +                     *this,
  +                     stylesheetTree,
  +                     name,
  +                     atts,
  +                     lineNumber,
  +                     columnNumber);
  +     }
  +     else if (token == ELEMNAME_FORWARD_COMPATIBLE)
  +     {
  +             m_allocatedElements.push_back(0);
  +
  +             theElement = new ElemForwardCompatible(
                        *this,
                        stylesheetTree,
                        name,
                        atts,
                        lineNumber,
                        columnNumber);
  +
  +             m_allocatedElements.back() = theElement;
  +     }
  +     else
  +     {
  +             
error(XalanMessageLoader::getMessage(XalanMessages::UnknownXSLTToken_1Param, 
LongToDOMString(token)), 0, locator);
  +     }
  +
  +     return theElement;
   }
   
   
  
  
  
  1.3       +1 -0      
xml-xalan/c/src/xalanc/XSLT/StylesheetConstructionContextDefault.hpp
  
  Index: StylesheetConstructionContextDefault.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetConstructionContextDefault.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StylesheetConstructionContextDefault.hpp  19 Sep 2003 20:33:04 -0000      
1.2
  +++ StylesheetConstructionContextDefault.hpp  29 Dec 2003 01:25:52 -0000      
1.3
  @@ -456,6 +456,7 @@
   
        virtual ElemTemplateElement*
        createElement(
  +                     int                                                     
token,
                        Stylesheet&                                     
stylesheetTree,
                        const XalanDOMChar*                     name,
                        const AttributeListType&        atts,
  
  
  
  1.7       +18 -1     xml-xalan/c/src/xalanc/XSLT/StylesheetHandler.cpp
  
  Index: StylesheetHandler.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetHandler.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StylesheetHandler.cpp     2 Dec 2003 19:58:54 -0000       1.6
  +++ StylesheetHandler.cpp     29 Dec 2003 01:25:52 -0000      1.7
  @@ -523,6 +523,13 @@
                                                
if(m_constructionContext.getXSLTVersionSupported() < 
m_stylesheet.getXSLTVerDeclared())
                                                {
                                                        warn(name, 
XalanMessageLoader::getMessage(XalanMessages::UnknownXSLElement), locator);
  +
  +                                                     elem = 
m_constructionContext.createElement(
  +                                                                             
StylesheetConstructionContext::ELEMNAME_FORWARD_COMPATIBLE,
  +                                                                             
m_stylesheet,
  +                                                                             
name,
  +                                                                             
atts,
  +                                                                             
locator);
                                                }
                                                else
                                                {
  @@ -580,6 +587,7 @@
                                else 
                                {
                                        elem = 
m_constructionContext.createElement(
  +                                                                             
                StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT,
                                                                                
                m_stylesheet,
                                                                                
                name,
                                                                                
                atts,
  @@ -643,6 +651,7 @@
   
        ElemTemplateElement* const      pElem =
                m_constructionContext.createElement(
  +                     StylesheetConstructionContext::ELEMNAME_LITERAL_RESULT,
                        m_stylesheet,
                        name,
                        atts,
  @@ -828,7 +837,15 @@
        default:
                if (inExtensionElement() == false)
                {
  -                     error(name, 
XalanMessageLoader::getMessage(XalanMessages::UnknownXSLElement), locator);
  +                     if (m_constructionContext.getXSLTVersionSupported() < 
m_stylesheet.getXSLTVerDeclared())
  +                     {
  +                             // Forward-compatible mode...
  +                             m_inExtensionElementStack.back() = true;
  +                     }
  +                     else
  +                     {
  +                             error(name, 
XalanMessageLoader::getMessage(XalanMessages::UnknownXSLElement), locator);
  +                     }
                }
                break;
        }
  
  
  

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

Reply via email to