- From: David McBride <dmcbride@codeaurora.org>
- Date: Wed, 29 Sep 2010 12:48:31 -0700
- To: <xmlschema-dev@w3.org>
- Message-ID: <001301cb600f$4b744c80$e25ce580$@org>
I'm seeing some odd behavior when I parse XML with the schema that I just
developed. In particular, there are two elements, 'signal' and 'method',
which may contain an element, 'arg'. In the case of 'method', the element
'arg' may have a 'direction' attribute. However, in the case of 'signal',
the 'arg' element may NOT have a 'direction' attribute.
I've represented this in my schema, as follows:
<xs:complexType name="signal_arg_type">
<xs:sequence>
<xs:element
maxOccurs="unbounded" minOccurs="0" ref="annotation"/>
</xs:sequence>
<xs:attribute ref="name"/>
<xs:attribute name="type"
type="arg_and_property_type" use="required"/>
</xs:complexType>
<xs:complexType name="method_arg_type">
<xs:attribute ref="name"/>
<xs:attribute name="type"
type="arg_and_property_type" use="required"/>
<xs:attribute default="in" name="direction"
type="arg_direction"/>
</xs:complexType>
<xs:element name="method">
<xs:complexType>
<xs:choice
maxOccurs="unbounded" minOccurs="0">
<xs:element
maxOccurs="unbounded" minOccurs="0" ref="annotation"/>
<xs:element
maxOccurs="unbounded" minOccurs="0" name="arg" type="method_arg_type"/>
</xs:choice>
<xs:attribute ref="name"
use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="signal">
<xs:complexType>
<xs:choice
maxOccurs="unbounded" minOccurs="0">
<xs:element
maxOccurs="unbounded" minOccurs="0" name="arg" type="signal_arg_type"/>
<xs:element
maxOccurs="unbounded" minOccurs="0" ref="annotation"/>
</xs:choice>
<xs:attribute ref="name"
use="required"/>
</xs:complexType>
</xs:element>
Strangely enough, when I parse XML with signal elements, I end up with
SAXParseExceptions that say that the 'arg' element in 'signal' is not
allowed to have a 'direction' attribute, even though the xml that caused the
exception does not contain the 'direction' attribute!! For example, here is
one of the elements that causes the exception:
<signal name="DeviceAdded">
<arg name="udi" type="s"/>
</signal>
As you can see, there's no 'direction' attribute. How is it possible that
my parser could be throwing these exceptions, given the schema that I
described above?!
Thanks, in advance, for any feedback.
Received on Wednesday, 29 September 2010 20:44:33 UTC