[xsde-users] Parser fails to recognize a substitution
Andrey Filimonov
andrey.v.filimonov at gmail.com
Fri Dec 4 20:07:39 EST 2015
Hello,
i'm having definitions of the elements and types as follows:
<!--first xsd file-->
<xs:element name="signalPayload" type="ei:signalPayloadType"
substitutionGroup="strm:streamPayloadBase">
<xs:annotation>
<xs:documentation>Signal values for events and baselines</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="signalPayloadType">
<xs:complexContent>
<xs:extension base="strm:StreamPayloadBaseType">
<xs:choice>
<xs:element ref="ei:payloadBase"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--second xsd file-->
<xs:element name="interval" type="ei:IntervalType"/>
<xs:complexType name="IntervalType">
<xs:sequence>
<xs:element ref="xcal:dtstart" minOccurs="0"/>
<xs:element ref="xcal:duration" minOccurs="0"/>
<xs:element ref="xcal:uid" minOccurs="0"/>
<xs:element ref="strm:streamPayloadBase" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Both xsd files are compiled in a single xsde pass.
When i try to parse xml like this
<ns1:interval>
<ns7:duration>
<ns7:duration>PT1M</ns7:duration>
</ns7:duration>
<ns7:uid>
<ns7:text>0</ns7:text>
</ns7:uid>
<ns1:signalPayload>
<ns1:payloadFloat>
<ns1:value>5.0</ns1:value>
</ns1:payloadFloat>
</ns1:signalPayload>
</ns1:interval>
parsing fails because parser expects streamPayloadBase and not
signalPayload which can substitute streamPayloadBase. Substitution map
for streamPayloadBase is empty.
Best wishes,
Andrey.
More information about the xsde-users
mailing list