mapowscommon.h 7.73 KB
Newer Older
1
/******************************************************************************
2
 * $Id$
3 4 5
 *
 * Project:  MapServer
 * Purpose:  OGC OWS Common Implementation include file
6
 * Author:   Tom Kralidis (tomkralidis@gmail.com)
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
 *
 ******************************************************************************
 * Copyright (c) 2006, Tom Kralidis
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies of this Software or works derived from this Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 ****************************************************************************/

#ifndef MAPOWSCOMMON_H
#define MAPOWSCOMMON_H

#ifdef USE_LIBXML2

#include<libxml/parser.h>
#include<libxml/tree.h>

38 39
#endif

40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
/* W3C namespaces */

#define MS_OWSCOMMON_W3C_XLINK_NAMESPACE_URI      "http://www.w3.org/1999/xlink"
#define MS_OWSCOMMON_W3C_XLINK_NAMESPACE_PREFIX   "xlink"

#define MS_OWSCOMMON_W3C_XSI_NAMESPACE_URI        "http://www.w3.org/2001/XMLSchema-instance"
#define MS_OWSCOMMON_W3C_XSI_NAMESPACE_PREFIX     "xsi"

#define MS_OWSCOMMON_W3C_XS_NAMESPACE_URI         "http://www.w3.org/2001/XMLSchema"
#define MS_OWSCOMMON_W3C_XS_NAMESPACE_PREFIX      "xs"

/* OGC namespaces */

#define MS_OWSCOMMON_OGC_NAMESPACE_URI      "http://www.opengis.net/ogc"
#define MS_OWSCOMMON_OGC_NAMESPACE_PREFIX   "ogc"

#define MS_OWSCOMMON_OWS_NAMESPACE_URI      "http://www.opengis.net/ows"
#define MS_OWSCOMMON_OWS_NAMESPACE_PREFIX   "ows"

#define MS_OWSCOMMON_OWS_110_NAMESPACE_URI      "http://www.opengis.net/ows/1.1"

61 62 63
#define MS_OWSCOMMON_OWS_20_NAMESPACE_URI   "http://www.opengis.net/ows/2.0"
#define MS_OWSCOMMON_OWS_20_SCHEMAS_LOCATION    "/ows/2.0/owsAll.xsd"

64 65 66 67 68 69 70 71 72 73 74 75
/* OGC URNs */

#define MS_OWSCOMMON_URN_OGC_CRS_4326 "urn:opengis:def:crs:OGC:2:84"

/* default OGC Schemas Location */

#define MS_OWSCOMMON_SCHEMAS_LOCATION "http://schemas.opengis.net"

/* OGC codespace */

#define MS_OWSCOMMON_OGC_CODESPACE "OGC"

76 77
/* WCS namespaces */

78
#define MS_OWSCOMMON_WCS_20_NAMESPACE_URI   "http://www.opengis.net/wcs/2.0"
79
#define MS_OWSCOMMON_WCS_20_SCHEMAS_LOCATION    "/wcs/2.0/wcsAll.xsd"
80
#define MS_OWSCOMMON_WCS_NAMESPACE_PREFIX   "wcs"
81 82 83

/* GML namespaces */

84
#define MS_OWSCOMMON_GML_NAMESPACE_URI      "http://www.opengis.net/gml"
85
#define MS_OWSCOMMON_GML_NAMESPACE_PREFIX   "gml"
86

87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
#define MS_OWSCOMMON_GML_32_NAMESPACE_URI   "http://www.opengis.net/gml/3.2"

#define MS_OWSCOMMON_GML_212_SCHEMA_LOCATION       "/gml/2.1.2/feature.xsd"
#define MS_OWSCOMMON_GML_311_SCHEMA_LOCATION       "/gml/3.1.1/base/gml.xsd"
#define MS_OWSCOMMON_GML_321_SCHEMA_LOCATION       "/gml/3.2.1/gml.xsd"

/* WFS namespaces */

#define MS_OWSCOMMON_WFS_NAMESPACE_PREFIX          "wfs"
#define MS_OWSCOMMON_WFS_NAMESPACE_URI             "http://www.opengis.net/wfs"
#define MS_OWSCOMMON_WFS_20_NAMESPACE_URI          "http://www.opengis.net/wfs/2.0"

#define MS_OWSCOMMON_WFS_10_SCHEMA_LOCATION        "/wfs/1.0.0/WFS-basic.xsd"
#define MS_OWSCOMMON_WFS_11_SCHEMA_LOCATION        "/wfs/1.1.0/wfs.xsd"
#define MS_OWSCOMMON_WFS_20_SCHEMA_LOCATION        "/wfs/2.0/wfs.xsd"

/* FES namespaces */

#define MS_OWSCOMMON_FES_20_NAMESPACE_PREFIX       "fes"
#define MS_OWSCOMMON_FES_20_NAMESPACE_URI          "http://www.opengis.net/fes/2.0"

#define MS_OWSCOMMON_FES_20_SCHEMA_LOCATION        "/filter/2.0/filterAll.xsd"

110 111
/* GMLCov namespaces */

112 113
#define MS_OWSCOMMON_GMLCOV_10_NAMESPACE_URI    "http://www.opengis.net/gmlcov/1.0"
#define MS_OWSCOMMON_GMLCOV_NAMESPACE_PREFIX    "gmlcov"
114 115

/* SWE namespaces */
116 117
#define MS_OWSCOMMON_SWE_20_NAMESPACE_URI   "http://www.opengis.net/swe/2.0"
#define MS_OWSCOMMON_SWE_NAMESPACE_PREFIX   "swe"
118

119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
/* Inspire namespaces */

#define MS_INSPIRE_COMMON_NAMESPACE_URI     "http://inspire.ec.europa.eu/schemas/common/1.0"
#define MS_INSPIRE_COMMON_NAMESPACE_PREFIX  "inspire_common"
#define MS_INSPIRE_COMMON_SCHEMA_LOCATION   "/common/1.0/common.xsd"

#define MS_INSPIRE_VS_NAMESPACE_URI         "http://inspire.ec.europa.eu/schemas/inspire_vs/1.0"
#define MS_INSPIRE_VS_NAMESPACE_PREFIX      "inspire_vs"
#define MS_INSPIRE_VS_SCHEMA_LOCATION       "/inspire_vs/1.0/inspire_vs.xsd"

#define MS_INSPIRE_DLS_NAMESPACE_URI        "http://inspire.ec.europa.eu/schemas/inspire_dls/1.0"
#define MS_INSPIRE_DLS_NAMESPACE_PREFIX     "inspire_dls"
#define MS_INSPIRE_DLS_SCHEMA_LOCATION      "/inspire_dls/1.0/inspire_dls.xsd"


/* MapServer namespaces */
#define MS_DEFAULT_NAMESPACE_PREFIX         "ms"
#define MS_DEFAULT_NAMESPACE_URI            "http://mapserver.gis.umn.edu/mapserver"


/* OWS errors */

/* OWS 1.1.0 Table 25 */
#define MS_OWS_ERROR_OPERATION_NOT_SUPPORTED    "OperationNotSupported"
#define MS_OWS_ERROR_MISSING_PARAMETER_VALUE    "MissingParameterValue"
#define MS_OWS_ERROR_INVALID_PARAMETER_VALUE    "InvalidParameterValue"
#define MS_OWS_ERROR_VERSION_NEGOTIATION_FAILED "VersionNegotiationFailed"
#define MS_OWS_ERROR_INVALID_UPDATE_SEQUENCE    "InvalidUpdateSequence"
#define MS_OWS_ERROR_OPTION_NOT_SUPPORTED       "OptionNotSupported"
#define MS_OWS_ERROR_NO_APPLICABLE_CODE         "NoApplicableCode"

#define MS_WFS_ERROR_OPERATION_PROCESSING_FAILED "OperationProcessingFailed"

#ifdef USE_LIBXML2

154 155 156
/* function prototypes */


157 158 159 160 161
xmlNodePtr msOWSCommonServiceIdentification(xmlNsPtr psNsOws, mapObj *map,
                                            const char *servicetype,
                                            const char *version,
                                            const char *namespaces,
                                            const char *validated_language);
162

163 164 165 166 167
xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws,
                                      xmlNsPtr psXLinkNs,
                                      mapObj *map,
                                      const char *namespaces,
                                      const char *validated_language);
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

xmlNodePtr msOWSCommonOperationsMetadata(xmlNsPtr psNsOws);

#define OWS_METHOD_GET     1
#define OWS_METHOD_POST    2
#define OWS_METHOD_GETPOST 3

xmlNodePtr msOWSCommonOperationsMetadataOperation(xmlNsPtr psNsOws, xmlNsPtr psXLinkNs, char *name, int method, char *url);

xmlNodePtr msOWSCommonOperationsMetadataDomainType(int version, xmlNsPtr psNsOws, char *elname, char *name, char *values);

xmlNodePtr msOWSCommonExceptionReport(xmlNsPtr psNsOws, int ows_version, const char *schemas_location, const char *version, const char *language, const char *exceptionCode, const char *locator, const char *ExceptionText);

xmlNodePtr msOWSCommonBoundingBox(xmlNsPtr psNsOws, const char *crs, int dimensions, double minx, double miny, double maxx, double maxy);

xmlNodePtr msOWSCommonWGS84BoundingBox(xmlNsPtr psNsOws, int dimensions, double minx, double miny, double maxx, double maxy);

int _validateNamespace(xmlNsPtr psNsOws);

187 188
int msOWSSchemaValidation(const char* xml_schema, const char* xml);

189 190
#endif /* defined(USE_LIBXML2) */

191
int msOWSCommonNegotiateVersion(int requested_version, const int supported_versions[], int num_supported_versions);
192

193
#endif /* MAPOWSCOMMON_H */