// -*- mode: c++; c-basic-offset:4 -*- // This file is part of libdap, A C++ implementation of the OPeNDAP Data // Access Protocol. // Copyright (c) 2017 OPeNDAP, Inc. // Author: Nathan Potter // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112. #ifndef DAPXMLNAMSPACES_H_ #define DAPXMLNAMSPACES_H_ #include namespace libdap { enum DAPVersion { DAP_2_0, DAP_3_2, DAP_4_0 }; class DapXmlNamspaces { public: virtual ~DapXmlNamspaces() {}; /** * Returns the XML Schema-instance namespace string. */ static std::string getXmlXsiNamespace(){ return "http://www.w3.org/2001/XMLSchema-instance"; } /** * Returns the XML namespace string. */ static std::string getXmlNamespace(){ return "http://www.w3.org/XML/1998/namespace"; } /** * Returns the GRDDL transformation URL for the passed DAP version. */ static std::string getGrddlTransformation(DAPVersion version){ switch(version) { case DAP_2_0: throw InternalErr(__FILE__, __LINE__, "DapXmlNamspaces::getDapXmlNamespaceString() - GRDDL Transformation undefined for DAP 2.0"); break; case DAP_3_2: return "http://xml.opendap.org/transforms/ddxToRdfTriples.xsl"; break; case DAP_4_0: throw InternalErr(__FILE__, __LINE__, "DapXmlNamspaces::getDapXmlNamespaceString() - GRDDL Transformation undefined for DAP 4.0"); break; default: throw InternalErr(__FILE__, __LINE__, "DapXmlNamspaces::getDapXmlNamespaceString() - Unrecognized namespace version."); break; } } /** * Returns the DAP XML namespace string for the passed DAP version. */ static std::string getDapNamespaceString(DAPVersion version){ switch(version) { case DAP_2_0: return "http://xml.opendap.org/ns/DAP2"; break; case DAP_3_2: return "http://xml.opendap.org/ns/DAP/3.2#"; break; case DAP_4_0: return "http://xml.opendap.org/ns/DAP/4.0#"; break; default: throw InternalErr(__FILE__, __LINE__, "DapXmlNamspaces::getDapXmlNamespaceString() - Unrecognized namespace version."); break; } } /** * Returns the schema location URI string for the passed DAP version. */ static std::string getSchemaLocationString(DAPVersion version){ switch(version) { case DAP_2_0: return "http://xml.opendap.org/dap/dap2.xsd"; break; case DAP_3_2: return "http://xml.opendap.org/dap/dap3.2.xsd"; break; case DAP_4_0: return "http://xml.opendap.org/dap/dap4.0.xsd"; break; default: throw InternalErr(__FILE__, __LINE__, "DapXmlNamspaces::getSchemaLocationString() - Unrecognized namespace version."); break; } } /** * Returns the schema location declaration (the namespace string followed by a * space followed by the schema location string) for the passed DAP version. */ static std::string getSchemaLocationDeclarationString(DAPVersion version){ return getDapNamespaceString(version).append(" ").append(getSchemaLocationString(version)); } }; } /* namespace libdap */ #endif /* DAPXMLNAMSPACES_H_ */