29#include <libxml/xmlschemas.h>
30#include <libxml/xmlschemastypes.h>
33#include "../ows_define.h"
88 fprintf(output,
"method:%d\n", or->
method);
89 fprintf(output,
"service:%d\n", or->
service);
92 fprintf(output,
"version:");
94 fprintf(output,
"\n");
112 str = (
char *)va_arg( varg,
char *);
116 fprintf(stderr,
"%s", str);
123 xmlSchemaParserCtxtPtr ctxt;
124 xmlSchemaPtr schema = NULL;
130 if (schema_is_file) ctxt = xmlSchemaNewParserCtxt(xml_schema->
buf);
131 else ctxt = xmlSchemaNewMemParserCtxt(xml_schema->
buf, xml_schema->
use);
133 xmlSchemaSetParserErrors(ctxt,
138 schema = xmlSchemaParse(ctxt);
139 xmlSchemaFreeParserCtxt(ctxt);
143 xmlSchemaCleanupTypes();
157 xmlSchemaValidCtxtPtr schema_ctx;
160 bool schema_generate =
true;
166 doc = xmlParseMemory(xml->
buf, xml->
use);
167 if (!doc)
return ret;
174 schema_generate =
false;
177 schema_generate =
false;
187 schema_ctx = xmlSchemaNewValidCtxt(schema);
188 xmlSchemaSetValidErrors(schema_ctx,
192 ret = xmlSchemaValidateDoc(schema_ctx, doc);
193 xmlSchemaFreeValidCtxt(schema_ctx);
197 if (schema_generate) {
227 "VERSION parameter is not valid (use x.y.z)",
"version");
235 "VERSION parameter is not valid (use x.y.z)",
"version");
248 "VERSION parameter is not valid (use x.y.z)",
"version");
266 buffer *
typename, *xmlstring, *schema, *b=NULL;
268 bool srsname =
false;
271 assert(o && or && cgi && query);
376 if (srsname ==
false) {
386 if ( (
cgi_method_post() && ( !strcmp(getenv(
"CONTENT_TYPE"),
"application/xml; charset=UTF-8")
387 || !strcmp(getenv(
"CONTENT_TYPE"),
"application/xml")
388 || !strcmp(getenv(
"CONTENT_TYPE"),
"text/xml")
389 || !strcmp(getenv(
"CONTENT_TYPE"),
"text/plain")))
void ows_log(ows *o, int log_level, const char *log)
int ows_version_get(ows_version *v)
void ows_version_flush(ows_version *v, FILE *output)
buffer * wfs_generate_schema(ows *o, ows_version *version)
bool buffer_cmp(const buffer *buf, const char *str)
void wfs_request_free(wfs_request *wr)
bool buffer_case_cmp(const buffer *buf, const char *str)
bool ows_layer_match_table(const ows *o, const buffer *name)
buffer * array_get(const array *a, const char *key)
void ows_error(ows *o, enum ows_error_code code, char *message, char *locator)
ows_version * ows_version_init()
bool ows_libxml_check_namespace(ows *o, xmlNodePtr n)
bool array_is_key(const array *a, const char *key)
buffer * buffer_from_str(const char *str)
void buffer_free(buffer *buf)
void ows_version_set(ows_version *v, int major, int minor, int release)
list * list_explode(char separator, const buffer *value)
void ows_request_flush(ows_request *or, FILE *output)
bool check_regexp(const char *str_request, const char *str_regex)
void ows_version_free(ows_version *v)
static ows_version * ows_request_check_version(ows *o, ows_request *or, const array *cgi)
void ows_request_check(ows *o, ows_request *or, const array *cgi, const char *query)
void ows_request_free(ows_request *or)
static void libxml2_callback(void *ctx, const char *msg,...)
ows_request * ows_request_init()
static xmlSchemaPtr ows_generate_schema(const ows *o, buffer *xml_schema, bool schema_is_file)
int ows_schema_validation(ows *o, buffer *xml_schema, buffer *xml, bool schema_is_file, enum ows_schema_type schema_type)
@ OWS_ERROR_MISSING_PARAMETER_VALUE
@ OWS_ERROR_INVALID_PARAMETER_VALUE
char * buf
size to next realloc
struct Ows_layer_node * next
union Ows_request::@0 request
xmlSchemaPtr schema_wfs_110
xmlSchemaPtr schema_wfs_100