#ifdef _MSC_VER #pragma warning(disable : 4250 4244) #endif #include #include #include #include Arabica::DOM::Document buildDOM(const std::string & xml); int main(int argc, const char* argv[]) { if(argc != 3) { std::cout << "mangle is an (in-development) XSLT processor\n" << argv[0] << " xmlfile xsltfile" << std::endl; return 0; } // if ... try { Arabica::SAX::InputSource source(argv[2]); Arabica::XSLT::StylesheetCompiler compiler; std::unique_ptr > stylesheet = compiler.compile(source); if(stylesheet.get() == 0) { std::cerr << "Couldn't compile stylesheet: " << compiler.error() << std::endl; return -1; } // if ... stylesheet->set_error_output(std::cerr); Arabica::DOM::Document document = buildDOM(argv[1]); if(document == 0) { std::cerr << "Could not parse XML source" << std::endl; return 0; } // if ... stylesheet->execute(document); } catch(const std::runtime_error& ex) { std::cerr << ex.what() << std::endl; } // catch return 0; } // main Arabica::DOM::Document buildDOM(const std::string & filename) { Arabica::SAX::InputSource is(filename); Arabica::SAX2DOM::Parser parser; parser.parse(is); return parser.getDocument(); } // buildDOM