00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <vaucanson/config/system.hh>
00019
00020 #if not defined (VCSN_XML_XERCES_PARSER_HH) and \
00021 (not defined (VCSN_SANITY_CHECK) or defined (VCSN_USE_XML))
00022 # define VCSN_XML_XERCES_PARSER_HH
00023
00024 # ifndef VCSN_USE_XML
00025 # error Vaucanson XML support is disabled.
00026 # endif
00027
00039 # include <iostream>
00040 # include <cstdlib>
00041
00042 # include <xercesc/dom/DOM.hpp>
00043 # include <xercesc/framework/Wrapper4InputSource.hpp>
00044
00045 # include <vaucanson/tools/usual_macros.hh>
00046 # include <vaucanson/xml/ios.hh>
00047 # include <vaucanson/xml/strings.hh>
00048 # include <vaucanson/xml/error_handler.hh>
00049
00050 # ifndef VCSN_XSD_PATH
00051 # define VCSN_XSD_PATH VCSN_DATA_PATH "/vaucanson.xsd"
00052 # endif // ! VCSN_XSD_PATH
00053
00054 namespace vcsn
00055 {
00056 namespace xml
00057 {
00058
00059 struct xerces_parser
00060 {
00069 template <class IStream>
00070 static
00071 xercesc::DOMElement* stream_parser(IStream& is);
00072
00073 private:
00074 template <class IStream>
00075 static
00076 xercesc::DOMDocument* loaddocument(xercesc::DOMBuilder* parser,
00077 IStream& is);
00078 };
00079 }
00080
00081 }
00082
00083
00084 # ifndef VCSN_USE_INTERFACE_ONLY
00085 # include <vaucanson/xml/xerces_parser.hxx>
00086 # endif // VCSN_USE_INTERFACE_ONLY
00087
00088
00089 #endif // ! VCSN_XML_XERCES_PARSER_HH && (! VCSN_SANITY_CHECK || VCSN_USE_XML)