DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15569>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15569 XalanDocument doesn�t work as ParsedSource / stringstream doesn�t work as input after it has been used as input Summary: XalanDocument doesn�t work as ParsedSource / stringstream doesn�t work as input after it has been used as input Product: Xerces-C++ Version: 2.1.0 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Major Priority: Other Component: Build AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Hi, I use MSVC 6.0 on Windows NT. I maybe found some Bugs in your C++ API, that I didn�t understand. It could be that i�m too stupid to understand the API, but please try the Source Code i�m going to attach. I just tried to use the Result of one Transformation for the next Transformation. Therefore I use an created but empty XalanDocument as Result Target. I take this and use it as InputSource for the next Transformation. It didn�t work, so I decided to use stringstream instead of XalanDocument. Didn�t work either. I even tried to convert all to Xerces DOM_Document and back. Didn�t work either. I tried creating my empty XalanDocument through various ParserLiasion. It�s just impossible. The only way I encountered to process the Output of a Transformation is to write it to a file, and use that file as Input. That just can�t be true? If it is like that, than please do so remarks in your Documentation. (if there are remarks, i didn�t find them...) I tried to find the solution myself, but i�m not a crack... But what makes me scratch my head about your Design, is that any InputSource for transformations is run through a parser... Later in the doTransform the XalanDocument is extracted again. If you got any Questions, feel free to eMail me. It would be nice to get an reply, what was wrong (especially if i�m just too stupid..). Source Code: (I Hope it�s not too long but it�s a working Testframe with Comments on what didn�t work, and how i got around it...) bool func() { XMLPlatformUtils::Initialize(); // Initialize Xalan. XalanTransformer::initialize(); XalanTransformer Transformer; XercesDOMSupport theDOMSupport; XercesParserLiaison theParserLiaison(theDOMSupport); int theResult=0; XalanDocument *pOne; XalanDocument *pTwo=theParserLiaison.createDocument(); XalanDocument *pThree=theParserLiaison.createDocument(); XalanParsedSource *pP; theResult = Transformer.parseSource("foo.xml",pP); if(theResult!=0) { std::cout << Transformer.getLastError() << std::endl; return false; } std::cout << "Parsed 1!" << std::endl; pOne=pP->getDocument(); //------------THIS DOESN�T WORK !!!!!!!--------------------------------- ---- // theResult = Transformer.transform(pOne,"cgn_sample.cgn",pTwo); // dunno... //------------THIS WORKS !!!!!!!!!!!!!!--------------------------------- ---- theResult = Transformer.transform(*pP,"foo.xsl",pTwo); // works... // theResult = Transformer->transform ("dsl_sample.xml","cgn_sample.cgn",pTwo); // also works... if(theResult!=0) { std::cout << Transformer.getLastError() << std::endl; return false; } std::cout << "Transformed 1!" << std::endl; //------------THIS DOESN�T WORK !!!!!!!--------------------------------- ---- // theResult = Transformer->transform (pTwo,"cgn_sample.cgn",pThree); //dunno //------------THIS WORKS !!!!!!!!!!!!!!--------------------------------- ---- std::ofstream out("temp.xml"); XalanStdOutputStream theStream(out); XalanOutputStreamPrintWriter thePrintWriter(theStream); FormatterToXML theFormatter(thePrintWriter); FormatterTreeWalker theWalker(theFormatter); theWalker.traverse(pTwo); //if you use startDocument and endDocument you get 2 Headers!!!! out.close(); theResult = Transformer.transform ("temp.xml","cgn_sample.cgn",pThree); //works... if(theResult!=0) { std::cout << Transformer.getLastError() << std::endl; return false; } std::cout << "Transformed 2!" << std::endl; std::stringstream stream1; std::stringstream stream2; theResult = Transformer.transform ("dsl_sample.xml","cgn_sample.cgn",&stream1); //works... if(theResult!=0) { std::cout << Transformer.getLastError() << std::endl; return false; } std::cout << "Transformed 3!" << std::endl; //------------THIS DOESN�T WORK !!!!!!!--------------------------------- ---- //theResult = Transformer.transform (&stream1,"cgn_sample.cgn",&stream2); //dunno //------------THIS WORKS !!!!!!!!!!!!!!--------------------------------- ---- std::ofstream out2("temp2.xml"); out2 << stream1.str().c_str(); out2.close(); theResult = Transformer.transform ("temp2.xml","cgn_sample.cgn",&stream2); //works... if(theResult!=0) { std::cout << Transformer.getLastError() << std::endl; return false; } std::cout << "Transformed 4!" << std::endl; XalanTransformer::terminate(); // Terminate Xerces... XMLPlatformUtils::Terminate(); return true; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
