URIUtils::getDocumentBase(*xsltFilename, documentBase); xsltProcessor.process(*xmlInput, xsltInput, *resultOutput, documentBase);
xsltProcessor.process(*xmlInput, *xmlFilename, xsltInput, *xsltFilename, *resultOutput);
int main(int argc, char** argv) {    XSLTProcessor xsltProcessor;    String copyright("(C) 1999 The MITRE Corporation, Keith Visco, and contributors");    cerr << xsltProcessor.getAppName() << " ";    cerr << xsltProcessor.getAppVersion() << endl;    cerr << copyright <<endl;    //-- print banner line    Int32 fillSize = 1;    fillSize += copyright.length();    String fill;    fill.setLength(fillSize, '-');    cerr << fill <<endl<<endl;    //-- add ErrorObserver    SimpleErrorObserver seo;    xsltProcessor.addErrorObserver(seo);    //-- available flags    StringList flags;    flags.add(new String("i"));          // XML input    flags.add(new String("s"));          // XSL input    flags.add(new String("o"));          // Output filename    flags.add(new String("h"));		// help    NamedMap options;    options.setObjectDeletion(MB_TRUE);    CommandLineUtils::getOptions(options, argc, argv, flags);    if ( options.get("h") ) {        printHelp();        return 0;    }    String* xmlFilename = (String*)options.get("i");    String* xsltFilename = (String*)options.get("s");    String* outFilename = (String*)options.get("o");    //-- open XML file    istream* xmlInput = &cin;    if (xmlFilename && ! xmlFilename->isEqual("-")) {      char* chars = new char[xmlFilename->length()+1];      xmlInput = new ifstream(xmlFilename->toCharArray(chars), ios::in);      delete chars;    }    //-- handle output stream    ostream* resultOutput = &cout;    ofstream resultFileStream;    if ( outFilename && ! outFilename->isEqual("-")) {        char* chars = new char[outFilename->length()+1];        resultFileStream.open(outFilename->toCharArray(chars), ios::out);        delete chars;        if ( !resultFileStream ) {            cerr << "error opening output file: " << *xmlFilename << endl;            return -1;        }        resultOutput = &resultFileStream;    }    //-- process    String documentBase;    if ( !xsltFilename ) {      if (!xmlFilename) {	cerr << "you must specify XSLT file with -s option if XML is read from standard input" << endl;	printUsage();	return -1;      }      //-- use xml document to obtain a document base      URIUtils::getDocumentBase(*xmlFilename, documentBase);      xsltProcessor.process(*xmlInput, *resultOutput, documentBase);    }    else {        //-- open XSLT file        char* chars = new char[xsltFilename->length()+1];        ifstream xsltInput(xsltFilename->toCharArray(chars), ios::in);        delete chars;        // obtain document base from XSLT stylesheet        URIUtils::getDocumentBase(*xsltFilename, documentBase);        xsltProcessor.process(*xmlInput, xsltInput, *resultOutput, documentBase);    }    resultFileStream.close();    return 0;} //-- main