summaryrefslogtreecommitdiff
path: root/modules/CIAO/tools/XML/XML_Schema_Resolver.tpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/tools/XML/XML_Schema_Resolver.tpp')
-rw-r--r--modules/CIAO/tools/XML/XML_Schema_Resolver.tpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/CIAO/tools/XML/XML_Schema_Resolver.tpp b/modules/CIAO/tools/XML/XML_Schema_Resolver.tpp
new file mode 100644
index 00000000000..22039e01f14
--- /dev/null
+++ b/modules/CIAO/tools/XML/XML_Schema_Resolver.tpp
@@ -0,0 +1,48 @@
+// $Id$
+#ifndef XML_SCHEMA_RESOLVER_TPP
+#define XML_SCHEMA_RESOLVER_TPP
+
+#include "XML/XML_Schema_Resolver.h"
+#include "XML/XercesString.h"
+
+#include <xercesc/framework/LocalFileInputSource.hpp>
+#include <xercesc/framework/Wrapper4InputSource.hpp>
+
+using xercesc::Wrapper4InputSource;
+using xercesc::LocalFileInputSource;
+
+
+namespace CIAO
+{
+ namespace XML
+ {
+ template<typename Resolver>
+ XML_Schema_Resolver<Resolver>::XML_Schema_Resolver (void)
+ : resolver_ ()
+ {
+ }
+
+ template<typename Resolver>
+ XML_Schema_Resolver<Resolver>::XML_Schema_Resolver (Resolver &res)
+ : resolver_ (res)
+ {
+ }
+
+ /// This function is called by the Xerces infrastructure to
+ /// actually resolve the location of a schema.
+ template<typename Resolver>
+ InputSource *
+ XML_Schema_Resolver<Resolver>::resolveEntity (const XMLCh *const publicId,
+ const XMLCh *const systemId)
+ {
+ XStr path = resolver_ (publicId, systemId);
+ if (path.begin () == 0)
+ return 0;
+
+ // Ownership of these objects is given to other people.
+ return /*new Wrapper4InputSource*/ (new LocalFileInputSource (path.begin ()));
+ }
+ }
+}
+
+#endif /*XML_SCHEMA_RESOLVER_TPP*/