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]