dbertoni    2003/01/28 18:19:22

  Modified:    c/src/XSLT XSLTEngineImpl.cpp
  Log:
  Traverse the DOM instance correctly when compiling a stylesheet.
  
  Revision  Changes    Path
  1.167     +28 -4     xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp
  
  Index: XSLTEngineImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp,v
  retrieving revision 1.166
  retrieving revision 1.167
  diff -u -r1.166 -r1.167
  --- XSLTEngineImpl.cpp        21 Dec 2002 00:21:25 -0000      1.166
  +++ XSLTEngineImpl.cpp        29 Jan 2003 02:19:22 -0000      1.167
  @@ -477,11 +477,31 @@
   
                if(stylesheetNode != 0)
                {
  -                     xslIdentifier = XALAN_STATIC_UCODE_STRING("Input XSL");
  +                     const XalanNode::NodeType       theType = 
stylesheetNode->getNodeType();
   
  -                     FormatterTreeWalker tw(stylesheetProcessor);
  +                     if (theType != XalanNode::ELEMENT_NODE && theType != 
XalanNode::DOCUMENT_NODE)
  +                     {
  +                             
error(StaticStringToDOMString(XALAN_STATIC_UCODE_STRING("Compiling a stylesheet from a 
DOM instance requires a Document or Element node")));
  +                     }
  +                     else
  +                     {
  +                             xslIdentifier = XALAN_STATIC_UCODE_STRING("Input XSL");
  +
  +                             FormatterTreeWalker tw(stylesheetProcessor);
   
  -                     tw.traverse(stylesheetSource.getNode());
  +                             if (theType == XalanNode::DOCUMENT_NODE)
  +                             {
  +                                     tw.traverse(stylesheetNode);
  +                             }
  +                             else
  +                             {
  +                                     stylesheetProcessor.startDocument();
  +
  +                                     tw.traverseSubtree(stylesheetNode);
  +
  +                                     stylesheetProcessor.endDocument();
  +                             }
  +                     }
                }
                else
                {
  @@ -819,7 +839,11 @@
   
                        FormatterTreeWalker tw(stylesheetProcessor);
   
  -                     tw.traverse(frag, frag->getParentNode());
  +                     stylesheetProcessor.startDocument();
  +
  +                     tw.traverseSubtree(frag);
  +
  +                     stylesheetProcessor.endDocument();
   
                        if(m_diagnosticsPrintWriter != 0)
                        {
  
  
  

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

Reply via email to