Blame DapXmlNamespaces.h

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