[xsd-users] Issue on parsing of one element which is of different
types
Sirigiri Madhavi
smadhavi at prokarma.com
Wed Apr 2 05:19:34 EDT 2008
Hi All,
I have some issue on parsing of one element(EventMessage) which is of different types( AlertOpen, AlertClosure )
Detailed explanation:
1. Event.xml :
<?xml version="1.0" encoding="UTF8" standalone="yes" ?>
<ns2:EventMessages xmlns:ns2="http://prokarma.com/notifications/v200701"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://prokarma.com/notifications/v200701 notifications_v200701.xsd">
<EventMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance <http://www.w3.org/2001/XMLSchema-instance> " xsi:type="ns2:AlertOpen">
<Header>
<RecordType>AE</RecordType>
<RecordSubType xsi:nil="true" />
<EventDate>2008-02-13T09:38:00.000-05:00</EventDate>
<Version>0701</Version>
<EHMSReceivedDate>2008-02-14T00:18:21.000-05:00</EHMSReceivedDate>
<ReportingSystem>TTCI</ReportingSystem>
<SourceSystemDate>2008-02-14T00:06:43.000-05:00</SourceSystemDate>
</Header>
<Alertopen>OPEN</Alertopen>
</EventMessage>
<EventMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance <http://www.w3.org/2001/XMLSchema-instance> " xsi:type="AlertClosure">
<Header>
<RecordType>CE</RecordType>
<RecordSubType>M</RecordSubType>
<EventDate>2008-02-13T01:00:00.000-05:00</EventDate>
<Version>0701</Version>
<EHMSReceivedDate>2008-02-14T00:35:00.000-05:00</EHMSReceivedDate>
<ReportingSystem>WSR</ReportingSystem>
<SourceSystemDate>2008-02-13T01:00:00.000-05:00</SourceSystemDate>
</Header>
<Alertclose>CLOSE</Alertclose>
</EventMessage>
</ns2:EventMessages>
2.notifications_v200701.xsd :
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://prokarma.com/notifications/v200701"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:notif="http://prokarma.com/notifications/v200701"
xmlns:ns2="http://prokarma.com/notifications/v200701"
version="200701">
<xsd:complexType name="EventHeader">
<xsd:sequence>
<xsd:element name="RecordType" type="xsd:string">
<xsd:annotation>
<xsd:documentation>
These match the flat file format
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="RecordSubType" type="xsd:string" nillable="true" >
<xsd:annotation>
<xsd:documentation>
These match the flat file format
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EventDate" type="xsd:dateTime"></xsd:element>
<xsd:element name="Version" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EquipmentEventHeader">
<xsd:complexContent>
<xsd:extension base="notif:EventHeader">
<xsd:sequence>
<xsd:element name="EHMSReceivedDate" type="xsd:dateTime"/>
<xsd:element name="ReportingSystem" type="xsd:string"/>
<xsd:element name="SourceSystemDate" type="xsd:dateTime"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EquipmentMessage" abstract="true">
<xsd:complexContent>
<xsd:extension base="notif:EventMessage">
<xsd:sequence>
<xsd:element name="Header" type="notif:EquipmentEventHeader">
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="AlertOpen">
<xsd:complexContent>
<xsd:extension base="notif:EquipmentMessage">
<xsd:sequence>
<xsd:element name="Alertopen" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="AlertClosure">
<xsd:complexContent>
<xsd:extension base="notif:EquipmentMessage">
<xsd:sequence>
<xsd:element name="Alertclose" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EventMessage" abstract="true" />
<xsd:element name="EventMessages" type="notif:EventMessages" />
<xsd:complexType name="EventMessages">
<xsd:sequence>
<xsd:element name="EventMessage" type="notif:EventMessage" maxOccurs="unbounded" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
When I generate driver (notifications_v200701-driver.cxx) file automatically I didn't get any parser calls in that except the below one :
EventMessages_p.parsers (EventMessage_p);
As we have no parsers in the EventMessage-Skeleton class. so it is not generating any more parser calls in that driver file.
If I give manually EventMessages_p.parsers (AlertClosure_p); it is printing the values.
But I want to connect both types (AlertOpen and AlertClosure) of EventMessage parser automatically with the EventMessages parser.
Can anybody help.
Thanks in advance.
Madhu
More information about the xsd-users
mailing list