[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