- 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