Re: [xml] error restricting complexType list (parsing official, GML schema)




I apologize if this is a double-post, my initial reply did not make it to the list.
Looking for input regarding this [possible] bug:

Robert Coup  wrote:
...
   gml_error.xsd:15: element complexType: Schemas parser error : local
list type: A type, derived by list or union, must have the simple
ur-type definition as base type, not
'{http://www.example.org/gml}doubleList'.

   WXS schema gml_error.xsd failed to compile

This might be a bug in libxml2 as your schema validates with the w3.org
validator[1].

If you look at xmlschemas.c, the actual line generating the error is
located at xmlschemas.c:15161

    if ( (WXS_IS_LIST(type) || WXS_IS_UNION(type)) &&
         (WXS_IS_RESTRICTION(type) == 0) &&
here-->   (! WXS_IS_ANY_SIMPLE_TYPE(baseType)))

Simple-type macros are defined at xmlschemas.c:227:

#define WXS_IS_SIMPLE(item) \
    ((item->type == XML_SCHEMA_TYPE_SIMPLE) || \
     ((item->type == XML_SCHEMA_TYPE_BASIC) && \
      (item->builtInType != XML_SCHEMAS_ANYTYPE)))

#define WXS_IS_ANY_SIMPLE_TYPE(i) \
    (((i)->type == XML_SCHEMA_TYPE_BASIC) && \
      ((i)->builtInType == XML_SCHEMAS_ANYSIMPLETYPE))

As you can see, the macro in question verifies that the type is an
XMLSchema built-in type or anySimpleType. I believe the marcro used in
the test at line 15161 should be a combination of WXS_IS_SIMPLE and
WXS_IS_ANY_SIMPLE_TYPE, i.e., something like:

#define WXS_IS_SIMPLE_TYPE(i) \
     (((i->type == XML_SCHEMA_TYPE_SIMPLE) && \
      ((i->type == XML_SCHEMA_TYPE_BASIC) && \
      ((i)->builtInType == XML_SCHEMAS_ANYSIMPLETYPE)))


Does this look like a valid diagnosis, or am I missing something?

Thanks,
Piotr


[1] http://www.w3.org/2001/03/webdata/xsv



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]