dbertoni 2002/11/19 14:27:04 Modified: c/src/XalanExe XalanExe.cpp Log: Added option to read source document or stylesheet from stdin. Revision Changes Path 1.15 +91 -22 xml-xalan/c/src/XalanExe/XalanExe.cpp Index: XalanExe.cpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanExe/XalanExe.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- XalanExe.cpp 14 Nov 2002 23:55:32 -0000 1.14 +++ XalanExe.cpp 19 Nov 2002 22:27:03 -0000 1.15 @@ -95,12 +95,14 @@ #if !defined (XALAN_NO_NAMESPACES) using std::cerr; +using std::cin; using std::cout; using std::endl; #endif #if defined(XALAN_STRICT_ANSI_HEADERS) using std::atoi; +using std::strlen; #endif @@ -134,6 +136,12 @@ << " -v Validates source documents." << endl << " -? Display this message." + << endl + << " - A dash as the 'source' argument reads from stdin." + << endl + << " - A dash as the 'stylesheet' argument reads from stdin." + << endl + << " ('-' cannot be used for both arguments.)" << endl; } @@ -186,7 +194,7 @@ }; void - setParams(XalanTransformer& theTransformer) + setParams(XalanTransformer& theTransformer) const { theTransformer.setUseValidation(m_validate); @@ -252,17 +260,13 @@ const char* argv[], Params& params) { -#if defined(XALAN_STRICT_ANSI_HEADERS) - using std::strlen; -#endif - bool fSuccess = true; for (int i = 1; i < argc && fSuccess == true; ++i) { - if (argv[i][0] == '-') + if (argv[i][0] == '-' && argv[i][1] != '\0') { - if (strlen(argv[i]) != 2) + if (argv[i][2] != '\0') { fSuccess = false; } @@ -379,7 +383,11 @@ { return false; } - else if (params.m_xslFileName == 0 && params.m_useStylesheetPI == false) + else if (params.m_xslFileName == 0) + { + return params.m_useStylesheetPI; + } + else if (strcmp(params.m_xslFileName, params.m_inFileName) == 0) { return false; } @@ -391,6 +399,80 @@ +inline int +transform( + XalanTransformer& theTransformer, + const Params& theParams, + const XSLTInputSource& theSource, + const XSLTInputSource& theStylesheetSource) +{ + if (theParams.m_outFileName != 0) + { + return theTransformer.transform( + theSource, + theStylesheetSource, + theParams.m_outFileName); + } + else + { + return theTransformer.transform( + theSource, + theStylesheetSource, + cout); + } +} + + + +inline int +transform( + XalanTransformer& theTransformer, + const Params& theParams, + const XSLTInputSource& theSource) +{ + assert(theParams.m_xslFileName != 0); + + if (theParams.m_xslFileName[0] == '-' && + theParams.m_xslFileName[1] == '\0') + { + return transform( + theTransformer, + theParams, + theSource, + &cin); + } + else + { + return transform( + theTransformer, + theParams, + theSource, + theParams.m_xslFileName); + } +} + + + +inline int +transform( + XalanTransformer& theTransformer, + const Params& theParams) +{ + assert(theParams.m_inFileName != 0); + + if (theParams.m_inFileName[0] == '-' && + theParams.m_inFileName[1] == '\0') + { + return transform(theTransformer, theParams, &cin); + } + else + { + return transform(theTransformer, theParams, theParams.m_inFileName); + } +} + + + int xsltMain( int argc, @@ -424,20 +506,7 @@ // Set any options... theParams.setParams(theTransformer); - if (theParams.m_outFileName != 0) - { - theResult = theTransformer.transform( - theParams.m_inFileName, - theParams.m_xslFileName, - theParams.m_outFileName); - } - else - { - theResult = theTransformer.transform( - theParams.m_inFileName, - theParams.m_xslFileName, - cout); - } + theResult = transform(theTransformer, theParams); if (theResult != 0) {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]