[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