ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » ESQL: access value in a choice group with unknown sequence

Post new topic  Reply to topic Goto page 1, 2, 3, 4  Next
 ESQL: access value in a choice group with unknown sequence « View previous topic :: View next topic » 
Author Message
ottfried11
PostPosted: Tue Aug 06, 2013 10:33 am    Post subject: ESQL: access value in a choice group with unknown sequence Reply with quote

Apprentice

Joined: 28 Jun 2013
Posts: 29

Hi all,
I'm trying to parse the following messagebody, created with DFDL, in a Compute Node.

Code:

refInSWEIOBody
   choiceElement
         structure14332
               structureHeader
                     structureLength:CHARACTER:00117
                     reserviert:CHARACTER:24000
               structureBody14332
                     messageStream
                           KTHANHandelsplatz
                                 domain:CHARACTER:7
                                 length:CHARACTER:003
                                 value:CHARACTER:EUL
                           KTHANHandels_Waehrung
                                 domain:CHARACTER:8
                                 length:CHARACTER:003
                                 value:CHARACTER:EUR
                           KTHANKZ_Covered
                                 domain:CHARACTER:6
                                 length:CHARACTER:001
                                 value:CHARACTER:0
   choiceElement
         structure11013
               structureHeader
                     structureLength:CHARACTER:00067
                     reserviert:CHARACTER:24000
               structureBody11013
                     messageStream
                           KONTRKuerzel
                                 domain:CHARACTER:7
                                 length:CHARACTER:008
                                 value:CHARACTER:K981895I
                           KTAUFWeitere_Weisungen
                                 domain:CHARACTER:7
                                 length:CHARACTER:DDD
                           KTAUFMitteilung_Kntrhnt
                                 domain:CHARACTER:7
                                 length:CHARACTER:DDD
                           SETLVBezeichnung
                                 domain:CHARACTER:7
                                 length:CHARACTER:017
                                 value:CHARACTER:GB w/ Kumulierung
                           SETLVSettlement_Art
                                 domain:CHARACTER:8
                                 length:CHARACTER:002
                                 value:CHARACTER:LZ
                           KTAUFSettlement_Text
                                 domain:CHARACTER:7
                                 length:CHARACTER:DDD
   choiceElement
         structure12856
               structureHeader
                     structureLength:CHARACTER:00040
                     reserviert:CHARACTER:24000
               structureBody12856
                     messageStream
                           IDENTInstrument_Schema
                                 domain:CHARACTER:7
                                 length:CHARACTER:004
                                 value:CHARACTER:ISIN
                           IDENTInstrument_Ident
                                 domain:CHARACTER:7
                                 length:CHARACTER:012
                                 value:CHARACTER:DE0005140008
and so on ....


I don't know how to access the different values of the defined structures.

Here a code snipit:

Code:

      DECLARE refInTUBHeader REFERENCE TO InputBody.SWEIOGesamt.ASP_TUB_Header;
      DECLARE refInSWEIOBody REFERENCE TO InputBody.SWEIOGesamt.SWEIO;

      IF refInSWEIOBody.*.structure11013 .structureBody11013.messageStream.KONTRKuerzel.length <> 'DDD' THEN
...

This does not work.
Accessing the choiceElemet with an index is not possible, since
the array index can vary from message to message. The structure sequence does not have to be the same.
If possible, I'm looking for a solution in ESQL and not Java with XPATH.


Last edited by ottfried11 on Wed Aug 07, 2013 12:18 am; edited 1 time in total
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Tue Aug 06, 2013 10:36 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

Can you place a Trace node after your Input node so we can see what the Logical Message Tree looks like?

If you know what the LMT looks like, its easy to write ESQL to reference that tree structure.
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
dogorsy
PostPosted: Tue Aug 06, 2013 11:04 am    Post subject: Re: ESQL: access value in a choice group with unknown sequen Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

ottfried11 wrote:
Code:

      refInSWEIOBody.*.structure11013 .structureBody11013.messageStream.KONTRKuerzel.length <> 'DDD' THEN
...



The * after refInSWEIOBody is adding an extra level that I cannot see in the structure. If you mean to specify any namespace it should be refInSWEIOBody.*:structure11013 , or else remove it altogether

Or is choiceElement part of the structure ?...it would be easier if you posted the dfdl xsd rather than what you have posted above.

If you run a user trace, it will point you out to what the problem is. It probably will say something 'it could not navigate to element number X because it does not exist'
so then you will know which element in the path it is not locating.

PS: have you tried parsing the message using the toolkit DFDL editor ? If you do, on the right hand side you will see the message tree, and you can also switch to see as XML, which will help you to work out how to write your ESQL path
Back to top
View user's profile Send private message
kimbert
PostPosted: Tue Aug 06, 2013 12:47 pm    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Nice to see that you have got a reasonably complex DFDL model working, and have moved on to the next stage. Congratulations!

I think dogorsy is on the right lines. The best way to diagnose message flow errors is:
- use the debugger to find out *what* the message flow is doing.
- when you need to know *why* the message flow is doing it, switch to user trace + Trace nodes. Much more information about the underlying cause of the problem(s).

In your case, I suspect that you might want to use ESQL's SELECT function which allows querying of structures in really complex ways. It's ESQL's answer to XPath, but usually a lot more efficient ( cue for mqsiuser to jump in with a hearty 'amen' ).
_________________
Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too.
Back to top
View user's profile Send private message
mqsiuser
PostPosted: Tue Aug 06, 2013 2:49 pm    Post subject: Reply with quote

Yatiri

Joined: 15 Apr 2008
Posts: 637
Location: Germany

I have recently talked to a developer from SAP. He just said "XSLT is a performance killer" (meaning it kills the performance). This is something we learned and it wasn't obvious at all times (e.g. some time in the past)... it could have turned out different, but it didn't.

XPath is a contributing factor. Generally quering a message is obviously bringing performance down. Mqjeff, me and others would tend to always walk the messagetree (with REFERENCEs) to come/get to the desired field (and it's value(s)).
_________________
Just use REFERENCEs
Back to top
View user's profile Send private message
ottfried11
PostPosted: Wed Aug 07, 2013 2:14 am    Post subject: Reply with quote

Apprentice

Joined: 28 Jun 2013
Posts: 29

Hi all,

first of all: thanks for the quick responses.

I could not find a way to attach the trace log, so here it is (part of it):
Quote:


(0x01000000:Name):DFDL = ( ['dfdl' : 0x7fd068118840]
(0x01000000:Name):SWEIOGesamt = (
(0x01000000:Name):ASP_TUB_Header = (
(0x03000000:NameValue):TUB-HDR-ANFANG = X'ff' (BLOB)
(0x03000000:NameValue):TUB-HEADER-LEN = '512' (CHARACTER)
(0x03000000:NameValue):TIMESTAMP = '2013-06-07-17.32.44.409333' (CHARACTER)
(0x03000000:NameValue):MANDANT = 'HTDE' (CHARACTER)
(0x03000000:NameValue):PROCESS-ID = 'D291776 POAX603 ' (CHARACTER)
(0x03000000:NameValue):ASP-ID = 'SWEIO ' (CHARACTER)
(0x03000000:NameValue):FILLER1 = ' 00000000220000004049' (CHARACTER)
(0x03000000:NameValue):ONLINE = 'O' (CHARACTER)
(0x03000000:NameValue):AUFBAU = 'ND ' (CHARACTER)
(0x03000000:NameValue):VERARBEITUNGS-KZ = ' ' (CHARACTER)
(0x03000000:NameValue):VERSION = '+0000000011' (CHARACTER)
(0x03000000:NameValue):SPRACHE = 'X ' (CHARACTER)
(0x03000000:NameValue):USER = 'D291776 ' (CHARACTER)
(0x03000000:NameValue):FILLER2 = 'TA 2013-06-07-17.32.44.393921 B ID=SWEIO,SUB-ID=, ' (CHARACTER)
(0x03000000:NameValue):TUB-HDR-ENDE = ' --->' (CHARACTER)
)


(0x01000000:Name):SWEIO = (
(0x01000000:Name):choiceElement = (
(0x01000000:Name):structure14332 = (
(0x01000000:Name):structureHeader = (
(0x03000000:NameValue):structureLength = '00117' (CHARACTER)
(0x03000000:NameValue):reserviert = '24000' (CHARACTER)
)
(0x01000000:Name):structureBody14332 = (
(0x01000000:Name):messageStream = (
(0x01000000:Name):KTHANHandelsplatz = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = '003' (CHARACTER)
(0x03000000:NameValue):value = 'EUL' (CHARACTER)
)
(0x01000000:Name):KTHANHandels_Waehrung = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = '003' (CHARACTER)
(0x03000000:NameValue):value = 'EUR' (CHARACTER)
)
(0x01000000:Name):KTHANKZ_Covered = (
(0x03000000:NameValue):domain = '6' (CHARACTER)
(0x03000000:NameValue):length = '001' (CHARACTER)
(0x03000000:NameValue):value = '0' (CHARACTER)
)
(0x01000000:Name):KTHANKZ_Ausserboerslich = (
(0x03000000:NameValue):domain = '6' (CHARACTER)
(0x03000000:NameValue):length = '001' (CHARACTER)
(0x03000000:NameValue):value = '0' (CHARACTER)
)
(0x01000000:Name):KTHANHandelsart = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANKZ_Emission = (
(0x03000000:NameValue):domain = '6' (CHARACTER)
(0x03000000:NameValue):length = '001' (CHARACTER)
(0x03000000:NameValue):value = '0' (CHARACTER)
)
(0x01000000:Name):KTHANOpen_Close = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANFliesshandelscode = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANLimithoehe = (
(0x03000000:NameValue):domain = '2' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANLimitzusatz = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANKZ_Warab = (
(0x03000000:NameValue):domain = '6' (CHARACTER)
(0x03000000:NameValue):length = '001' (CHARACTER)
(0x03000000:NameValue):value = '0' (CHARACTER)
)
(0x01000000:Name):KTHANKZ_Anleiheerl_Ext = (
(0x03000000:NameValue):domain = '6' (CHARACTER)
(0x03000000:NameValue):length = '001' (CHARACTER)
(0x03000000:NameValue):value = '0' (CHARACTER)
)
(0x01000000:Name):KTHANKZ_Interessewa_Ext = (
(0x03000000:NameValue):domain = '6' (CHARACTER)
(0x03000000:NameValue):length = '001' (CHARACTER)
(0x03000000:NameValue):value = '0' (CHARACTER)
)
(0x01000000:Name):KTHANGueltigkeit = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANStoplimit = (
(0x03000000:NameValue):domain = '2' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANBetrag_angepasst = (
(0x03000000:NameValue):domain = '2' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANKZ_angepasst = (
(0x03000000:NameValue):domain = '6' (CHARACTER)
(0x03000000:NameValue):length = '001' (CHARACTER)
(0x03000000:NameValue):value = '0' (CHARACTER)
)
(0x01000000:Name):KTHANDeriv_Orderzusatz = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANTake_Up_Schema = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANTake_Up_Ident = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANTake_Up_Depot = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTHANTrade_Referenz = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
)
)
)
)
(0x01000000:Name):choiceElement = (
(0x01000000:Name):structure11013 = (
(0x01000000:Name):structureHeader = (
(0x03000000:NameValue):structureLength = '00067' (CHARACTER)
(0x03000000:NameValue):reserviert = '24000' (CHARACTER)
)
(0x01000000:Name):structureBody11013 = (
(0x01000000:Name):messageStream = (
(0x01000000:Name):KONTRKuerzel = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = '008' (CHARACTER)
(0x03000000:NameValue):value = 'K981895I' (CHARACTER)
)
(0x01000000:Name):KTAUFWeitere_Weisungen = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):KTAUFMitteilung_Kntrhnt = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
(0x01000000:Name):SETLVBezeichnung = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = '017' (CHARACTER)
(0x03000000:NameValue):value = 'GB w/ Kumulierung' (CHARACTER)
)
(0x01000000:Name):SETLVSettlement_Art = (
(0x03000000:NameValue):domain = '8' (CHARACTER)
(0x03000000:NameValue):length = '002' (CHARACTER)
(0x03000000:NameValue):value = 'LZ' (CHARACTER)
)
(0x01000000:Name):KTAUFSettlement_Text = (
(0x03000000:NameValue):domain = '7' (CHARACTER)
(0x03000000:NameValue):length = 'DDD' (CHARACTER)
)
)
)
)
)
(0x01000000:Name):choiceElement = (
(0x01000000:Name):structure16426 = (
(0x01000000:Name):structureHeader = (
(0x03000000:NameValue):structureLength = '00168' (CHARACTER)
(0x03000000:NameValue):reserviert = '24000' (CHARACTER)
)
(0x01000000:Name):structureBody = (
(0x03000000:NameValue):messageStream = '7003EUL8003EUR8DDD600102DDD8DDD8DDD600106001060010600106001060010600108DDD7DDD8DDD7DDD2DDD8DDD2DDD8DDD8DDD7DDD7DDD7DDD2DDD60010600107DDD2DDD2DDD8DDD8DDD' (CHARACTER)
)
)
)
(0x01000000:Name):choiceElement = (
(0x01000000:Name):structure15244 = (
(0x01000000:Name):structureHeader = (
(0x03000000:NameValue):structureLength = '00021' (CHARACTER)
(0x03000000:NameValue):reserviert = '24000' (CHARACTER)
)
(0x01000000:Name):structureBody = (
(0x03000000:NameValue):messageStream = '60010' (CHARACTER)
)
)
)




My Problem is, that I dont't know how to access the choiceElement. If the tree would always hace the same sequence, I could use an index (choiceElement[1], choiceElement[2]...) to access the fields. But there is no fixed sequence.

Here my xsd:

Quote:


<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions" xmlns:ibmSchExtn="http://www.ibm.com/schema/extensions" xmlns:recSepFieldsFmt="http://www.ibm.com/dfdl/RecordSeparatedFieldFormat" xmlns:tns="http://www.ibm.com/dfdl/ISO8583Types" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:import namespace="http://www.ibm.com/dfdl/RecordSeparatedFieldFormat" schemaLocation="IBMdefined/RecordSeparatedFieldFormat.xsd"/>
<xsd:annotation>
<xsd:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format byteOrder="{$dfdl:byteOrder}" encoding="{$dfdl:encoding}" escapeSchemeRef="recSepFieldsFmt:RecordEscapeScheme" occursCountKind="fixed" ref="recSepFieldsFmt:RecordSeparatedFieldsFormat"/>

<!--
This is a named format block. Use these to avoid repeating the same property values on many components.
Define as many of these as you like, and refer to them using dfdl:ref on any element/type/group.
-->
<dfdl:defineFormat name="TLV_complexType">
<dfdl:format emptyValueDelimiterPolicy="none" initiator="" lengthKind="implicit"/>
</dfdl:defineFormat>

<dfdl:defineFormat name="TLV_sequence">
<dfdl:format separator="" sequenceKind="ordered"/>
</dfdl:defineFormat>

</xsd:appinfo>
</xsd:annotation>


<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:lengthKind="implicit" ibmDfdlExtn:docRoot="true" name="SWEIOGesamt">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="ASP_TUB_Header"/>
<xsd:element ref="SWEIO"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>


<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:lengthKind="implicit" name="ASP_TUB_Header">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="1" dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:representation="binary" ibmDfdlExtn:sampleValue="0F00" name="TUB-HDR-ANFANG" type="xsd:hexBinary"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="3" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaa" name="TUB-HEADER-LEN" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="26" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="TIMESTAMP" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="4" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaa" name="MANDANT" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="32" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="PROCESS-ID" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="50" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="ASP-ID" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="28" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="FILLER1" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="1" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="a" name="ONLINE" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="8" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaa" name="AUFBAU" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="1" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="a" name="VERARBEITUNGS-KZ" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="11" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaaaaa" name="VERSION" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="4" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaa" name="SPRACHE" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="16" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaa" name="USER" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="322" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="FILLER2" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="5" dfdl:lengthKind="explicit" dfdl:textTrimKind="none" ibmDfdlExtn:sampleValue="aaaaa" name="TUB-HDR-ENDE" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>


<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="" dfdl:lengthKind="implicit" name="SWEIO">
<xsd:complexType>
<xsd:sequence dfdl:separator="">
<xsd:element dfdl:lengthKind="implicit" dfdl:occursCountKind="implicit" maxOccurs="unbounded" minOccurs="1" name="choiceElement">
<xsd:complexType>
<xsd:choice dfdl:initiatedContent="yes">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17840" dfdl:lengthKind="implicit" name="structure17840">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#18044" dfdl:lengthKind="implicit" name="structure18044">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#11010" dfdl:lengthKind="implicit" name="structure11010">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17322" dfdl:lengthKind="implicit" name="structure17322">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14308" dfdl:lengthKind="implicit" name="structure14308">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16440" dfdl:lengthKind="implicit" name="structure16440">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#12998" dfdl:lengthKind="implicit" name="structure12998">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#11005" dfdl:lengthKind="implicit" name="structure11005">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#13274" dfdl:lengthKind="implicit" name="structure13274">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#11017" dfdl:lengthKind="implicit" name="structure11017">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#12856" dfdl:lengthKind="implicit" name="structure12856">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody12856"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#13280" dfdl:lengthKind="implicit" name="structure13280">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#11013" dfdl:lengthKind="implicit" name="structure11013">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody11013"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#18202" dfdl:lengthKind="implicit" name="structure18202">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14332" dfdl:lengthKind="implicit" name="structure14332">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody14332"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14430" dfdl:lengthKind="implicit" name="structure14430">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14792" dfdl:lengthKind="implicit" name="structure14792">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16806" dfdl:lengthKind="implicit" name="structure16806">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17186" dfdl:lengthKind="implicit" name="structure17186">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17006" dfdl:lengthKind="implicit" name="structure17006">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17188" dfdl:lengthKind="implicit" name="structure17188">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17232" dfdl:lengthKind="implicit" name="structure17232">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17416" dfdl:lengthKind="implicit" name="structure17416">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17758" dfdl:lengthKind="implicit" name="structure17758">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17966" dfdl:lengthKind="implicit" name="structure17966">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody17966"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14862" dfdl:lengthKind="implicit" name="structure14862">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14788" dfdl:lengthKind="implicit" name="structure14788">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16228" dfdl:lengthKind="implicit" name="structure16228">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16316" dfdl:lengthKind="implicit" name="structure16316">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16862" dfdl:lengthKind="implicit" name="structure16862">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16822" dfdl:lengthKind="implicit" name="structure16822">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16966" dfdl:lengthKind="implicit" name="structure16966">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16018" dfdl:lengthKind="implicit" name="structure16018">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16570" dfdl:lengthKind="implicit" name="structure16570">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14394" dfdl:lengthKind="implicit" name="structure14394">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14392" dfdl:lengthKind="implicit" name="structure14392">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16096" dfdl:lengthKind="implicit" name="structure16096">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#15174" dfdl:lengthKind="implicit" name="structure15174">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14764" dfdl:lengthKind="implicit" name="structure14764">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#12954" dfdl:lengthKind="implicit" name="structure12954">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16830" dfdl:lengthKind="implicit" name="structure16830">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#11011" dfdl:lengthKind="implicit" name="structure11011">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17970" dfdl:lengthKind="implicit" name="structure17970">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#12340" dfdl:lengthKind="implicit" name="structure12340">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#12858" dfdl:lengthKind="implicit" name="structure12858">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17986" dfdl:lengthKind="implicit" name="structure17986">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17036" dfdl:lengthKind="implicit" name="structure17036">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14762" dfdl:lengthKind="implicit" name="structure14762">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#11003" dfdl:lengthKind="implicit" name="structure11003">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17280" dfdl:lengthKind="implicit" name="structure17280">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17240" dfdl:lengthKind="implicit" name="structure17240">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#15386" dfdl:lengthKind="implicit" name="structure15386">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17650" dfdl:lengthKind="implicit" name="structure17650">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17836" dfdl:lengthKind="implicit" name="structure17836">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody17836"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#17862" dfdl:lengthKind="implicit" name="structure17862">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#18046" dfdl:lengthKind="implicit" name="structure18046">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody18046"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#12678" dfdl:lengthKind="implicit" name="structure12678">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#11012" dfdl:lengthKind="implicit" name="structure11012">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#16426" dfdl:lengthKind="implicit" name="structure16426">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#15244" dfdl:lengthKind="implicit" name="structure15244">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="#14852" dfdl:lengthKind="implicit" name="structure14852">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element ref="structureHeader"/>
<xsd:element ref="structureBody"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>



<!-- Global elements for re-use -->
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="" dfdl:lengthKind="implicit" name="structureHeader">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="5" dfdl:lengthKind="explicit" dfdl:nilValueDelimiterPolicy="none" ibmDfdlExtn:sampleValue="aaa" name="structureLength">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="5" dfdl:lengthKind="explicit" dfdl:nilValueDelimiterPolicy="none" ibmDfdlExtn:sampleValue="aaaaa" name="reserviert">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:initiator="" dfdl:lengthKind="implicit" name="structureBody">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:sequenceKind="ordered">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="{xs:nonNegativeInteger(../../structureHeader/structureLength)-16}" dfdl:lengthKind="explicit" dfdl:nilValueDelimiterPolicy="none" ibmDfdlExtn:maxOccurs="1" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="messageStream">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>


<!-- This is a global complex type -->
<xsd:complexType name="TLV_type_mandatory">
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="1" dfdl:lengthKind="explicit" name="domain" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="3" dfdl:lengthKind="explicit" name="length" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="{xs:nonNegativeInteger(if (../length eq 'DDD') then 0 else ../length)}" dfdl:lengthKind="explicit" minOccurs="1" name="value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="TLV_type_optional">
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="1" dfdl:lengthKind="explicit" name="domain" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="3" dfdl:lengthKind="explicit" name="length" type="xsd:string"/>
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="{xs:nonNegativeInteger(if (../length eq 'DDD') then 0 else ../length)}" dfdl:lengthKind="explicit" dfdl:occursCountKind="implicit" minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

<!-- specific emlement definitions -->
<xsd:element dfdl:ref="TLV_complexType" name="structureBody11013">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="{xs:nonNegativeInteger(../../structureHeader/structureLength)-16}" dfdl:lengthKind="explicit" dfdl:nilValueDelimiterPolicy="none" ibmDfdlExtn:maxOccurs="1" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="messageStream">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element name="KONTRKuerzel" type="TLV_type_optional"/>
<xsd:element name="KTAUFWeitere_Weisungen" type="TLV_type_optional"/>
<xsd:element name="KTAUFMitteilung_Kntrhnt" type="TLV_type_optional"/>
<xsd:element name="SETLVBezeichnung" type="TLV_type_optional"/>
<xsd:element name="SETLVSettlement_Art" type="TLV_type_optional"/>
<xsd:element name="KTAUFSettlement_Text" type="TLV_type_optional"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element dfdl:ref="TLV_complexType" name="structureBody12856">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="{xs:nonNegativeInteger(../../structureHeader/structureLength)-16}" dfdl:lengthKind="explicit" dfdl:nilValueDelimiterPolicy="none" ibmDfdlExtn:maxOccurs="1" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="messageStream">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element name="IDENTInstrument_Schema" type="TLV_type_optional"/>
<xsd:element name="IDENTInstrument_Ident" type="TLV_type_optional"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element dfdl:ref="TLV_complexType" name="structureBody14332">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="{xs:nonNegativeInteger(../../structureHeader/structureLength)-16}" dfdl:lengthKind="explicit" dfdl:nilValueDelimiterPolicy="none" ibmDfdlExtn:maxOccurs="1" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="messageStream">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element name="KTHANHandelsplatz" type="TLV_type_optional"/>
<xsd:element name="KTHANHandels_Waehrung" type="TLV_type_optional"/>
<xsd:element name="KTHANKZ_Covered" type="TLV_type_optional"/>
<xsd:element name="KTHANKZ_Ausserboerslich" type="TLV_type_optional"/>
<xsd:element name="KTHANHandelsart" type="TLV_type_optional"/>
<xsd:element name="KTHANKZ_Emission" type="TLV_type_optional"/>
<xsd:element name="KTHANOpen_Close" type="TLV_type_optional"/>
<xsd:element name="KTHANFliesshandelscode" type="TLV_type_optional"/>
<xsd:element name="KTHANLimithoehe" type="TLV_type_optional"/>
<xsd:element name="KTHANLimitzusatz" type="TLV_type_optional"/>
<xsd:element name="KTHANKZ_Warab" type="TLV_type_optional"/>
<xsd:element name="KTHANKZ_Anleiheerl_Ext" type="TLV_type_optional"/>
<xsd:element name="KTHANKZ_Interessewa_Ext" type="TLV_type_optional"/>
<xsd:element name="KTHANGueltigkeit" type="TLV_type_optional"/>
<xsd:element name="KTHANStoplimit" type="TLV_type_optional"/>
<xsd:element name="KTHANBetrag_angepasst" type="TLV_type_optional"/>
<xsd:element name="KTHANKZ_angepasst" type="TLV_type_optional"/>
<xsd:element name="KTHANDeriv_Orderzusatz" type="TLV_type_optional"/>
<xsd:element name="KTHANTake_Up_Schema" type="TLV_type_optional"/>
<xsd:element name="KTHANTake_Up_Ident" type="TLV_type_optional"/>
<xsd:element name="KTHANTake_Up_Depot" type="TLV_type_optional"/>
<xsd:element name="KTHANTrade_Referenz" type="TLV_type_optional"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element dfdl:ref="TLV_complexType" name="structureBody17836">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element dfdl:emptyValueDelimiterPolicy="none" dfdl:length="{xs:nonNegativeInteger(../../structureHeader/structureLength)-16}" dfdl:lengthKind="explicit" dfdl:nilValueDelimiterPolicy="none" ibmDfdlExtn:maxOccurs="1" ibmDfdlExtn:sampleValue="aaaaaaaaaaaaaaaaaaaa" name="messageStream">
<xsd:complexType>
<xsd:sequence dfdl:ref="TLV_sequence">
<xsd:element name="MANDMAND_Id" type="TLV_type_optional"/>
<xsd:element name="WEITAReferenz" type="TLV_type_optional"/>
<xsd:element name="WEITATyp" type="TLV_type_optional"/>
<xsd:element name="WEITAGeschaeftsart" type="TLV_type_optional"/>
<xsd:element name="WEITAGegenwert" type="TLV_type_optional"/>
<xsd:element name="WEITAGegenwert_Whg" type="TLV_type_optional"/>
<xsd:element name="WEITAVersendung_Datum" type="TLV_type_optional"/>
<xsd:element name="WEITAVersendung_Zeit" type="TLV_type_optional"/>
<xsd:element name="WEITAGilt_Von_Datum" type="TLV_type_optional"/>
<xsd:element name="WEITAGilt_Von_Zeit" type="TLV_type_optional"/>
<xsd:element name="WEITAGilt_Bis_Datum" type="TLV_type_optional"/>
<xsd:element name="WEITAGilt_Bis_Zeit" type="TLV_type_optional"/>
<xsd:element name="WEITAPhase" type="TLV_type_optional"/>
<xsd:element name="WEITAAuftragsstatus" type="TLV_type_optional"/>
<xsd:element name="WEITAAuftrags_Nr_Fremd2" type="TLV_type_optional"/>
<xsd:element name="WEITANummer" type="TLV_type_optional"/>
<xsd:element name="WEITAErfassungsdatum" type="TLV_type_optional"/>
<xsd:element name="WEITAErfassungszeit" type="TLV_type_optional"/>
<xsd:element name="WEITAMenge" type="TLV_type_optional"/>
<xsd:element name="WEITAMengen_Einheit" type="TLV_type_optional"/>
<xsd:element name="WEITADisponent" type="TLV_type_optional"/>
<xsd:element name="WEITABetreuende_Stelle" type="TLV_type_optional"/>
<xsd:element name="WEITAORGEH_Code" type="TLV_type_optional"/>
<xsd:element name="WEITAAenderungsdatum" type="TLV_type_optional"/>
<xsd:element name="WEITAAenderungszeit" type="TLV_type_optional"/>
<xsd:element name="WEITABearbeitungsdatum" type="TLV_type_optional"/>
<xsd:element name="WEITABearbeitungszeit" type="TLV_type_optional"/>
<xsd:element name="WEITAFunktionstyp" type="TLV_type_optional"/>
<xsd:element name="WEITAFehlercode" type="TLV_type_optional"/>
<xsd:element name="WEITAAblehnungsgrund" type="TLV_type_optional"/>
<xsd:element name="WEITAUebermittlungsweg" type="TLV_type_optional"/>
<xsd:element name="WEITAAdr_Inhalt" type="TLV_type_optional"/>
<xsd:element name="WEITAAuftragnehmer" type="TLV_type_optional"/>
<xsd:element name="WEITAEmpfaenger_Typ" type="TLV_type_optional"/>
<xsd:el
Back to top
View user's profile Send private message
dogorsy
PostPosted: Wed Aug 07, 2013 2:45 am    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

ok, so the problem is that you have a unbound sequence of elements, which can be one of a choice.

so what I would do, is a for loop, for example:
Code:

FOR source as SWEIOGesamt.SWEIO.choiceElement[] DO
CASE FIELDNAME(source.*)
WHEN 'structureBody14332'
     do something
WHEN  'structureBody14335'
   do something else
END CASE;
END FOR;


sorry the formatting has gone mad... don't know how to fix it...
Back to top
View user's profile Send private message
kimbert
PostPosted: Wed Aug 07, 2013 4:34 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Quote:
My Problem is, that I dont't know how to access the choiceElement.
...and our problem is that we don't know *why* you want to access the choiceElement.
Obviously, it would be easy to iterate over all of the choiceElements in InputRoot using a REFERENCE or a FOR loop ( I have just seen dogorsy's reply). But I think you want a specific instance of choiceElement - and you have not told us what the query criteria are ( or did I miss it? ).
_________________
Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too.
Back to top
View user's profile Send private message
dogorsy
PostPosted: Wed Aug 07, 2013 4:46 am    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

kimbert wrote:
Quote:
My Problem is, that I dont't know how to access the choiceElement.
...and our problem is that we don't know *why* you want to access the choiceElement.
Obviously, it would be easy to iterate over all of the choiceElements in InputRoot using a REFERENCE or a FOR loop ( I have just seen dogorsy's reply). But I think you want a specific instance of choiceElement - and you have not told us what the query criteria are ( or did I miss it? ).


it would be nice if in DFDL we could say
Code:

<xsd:choice dfdl:initiatedContent="yes" maxOccurs="unbounded">
 


and do without the extra level (choiceElement)

then we would have an xml like
Code:

<SWEIO>
<structure14332>whatever here</structure14332>
<structure11013>some stuff</structure11013>
more elements
</SWEIO>


or maybe it is possible but I don't know how to....

Interestingly, the DFDL spec only says that minOccurs MUST be greater than 0, so it could be any positive integer, which in turn means maxOccurs MUST be greater or equal to minOccurs... so no reason why it could not be unbounded...


But I guess that could be achieved with an unordered sequence, unfortunately not implemented...
Back to top
View user's profile Send private message
ottfried11
PostPosted: Wed Aug 07, 2013 6:13 am    Post subject: Reply with quote

Apprentice

Joined: 28 Jun 2013
Posts: 29

Hi all,

this seems to work fine:

Code:

DECLARE refInSWEIOBody REFERENCE TO InputBody.SWEIOGesamt.SWEIO;

DECLARE iSWEIOCount INTEGER 0;
...
   FOR source as refInSWEIOBody.choiceElement[] DO
      SET iSWEIOCount = iSWEIOCount + 1;       
      CASE FIELDNAME(source.*)
      WHEN 'structure14332' THEN
             IF refInSWEIOBody.choiceElement[iSWEIOCount].structure14332.structureBody14332.messageStream.KTHANLimithoehe.length = 'DDD' THEN
                SET chKTHANLimithoehe = '0';
             ELSE
                SET chKTHANLimithoehe = refInSWEIOBody.choiceElement[iSWEIOCount].structure14332.structureBody14332.messageStream.KTHANLimithoehe.value;
             END IF;
      WHEN  'structure17836' THEN
              IF refInSWEIOBody.choiceElement[iSWEIOCount].structure17836.structureBody17836.messageStream.WEITAFunktionstyp.length <> 'DDD' THEN
                 SET chWEITAFunktionstyp = refInSWEIOBody.choiceElement[iSWEIOCount].structure17836.structureBody17836.messageStream.WEITAFunktionstyp.value;
              ELSE
                 SET chWEITAFunktionstyp = 'ORD';
              END IF;
              SET chWEITANummer = refInSWEIOBody.choiceElement[iSWEIOCount].structure17836.structureBody17836.messageStream.WEITANummer.value;
         WHEN  'structure12856' THEN
                SET chIDENTInstrument_Ident = refInSWEIOBody.choiceElement[iSWEIOCount].structure12856.structureBody12856.messageStream.IDENTInstrument_Ident.value;
      END CASE;
   END FOR;


Is there any way of accessing source directly?

I tried
Code:

source.structure14332.structureBody14332.messageStream.KTHANLimithoehe.length

and
Code:

source.structureBody14332.messageStream.KTHANLimitho

and the compiler had no problem with it. But I could not access the nodes. Thats why I implemented the counter.

Thats also what I meant by "can not accessi the choiceElement".

@dogorsy: an unordered sequence would be perfect for this use case.

Thanks again for your help.

Please let me know if I can can code it in aq better way
Back to top
View user's profile Send private message
dogorsy
PostPosted: Wed Aug 07, 2013 6:23 am    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

you don't need the counter, source is a dynamic reference that is pointing to refInSWEIOBody.choiceElement

so you can code
Code:

CASE FIELDNAME(source.*)
      WHEN 'structure14332' THEN
             IF source.structure14332.structureBody14332.messageStream.KTHANLimithoehe.length = 'DDD'

etc.
Back to top
View user's profile Send private message
ottfried11
PostPosted: Wed Aug 07, 2013 6:31 am    Post subject: Reply with quote

Apprentice

Joined: 28 Jun 2013
Posts: 29

I tried that.
it always points to the first choiceElement, which in this case is the 14332 structure.

How would you DECLARE the source variable?
I did not DECLARE it at all.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Wed Aug 07, 2013 6:32 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

Every time you have anything that uses a counter in a [], you can AND SHOULD replace it with a reference.

Your initial for loop creates a reference. You can MOVE that to an appropriate child element if you want. You can also create a NEW reference, either manually or by creating a second for loop.

None of this really has to do with the fact that you're using a choice.

You could replace your CASE statement with a set of for loops, one for each case. if there were no elements that matched that, then the loop would execute zero times.

I'm not saying it's a good idea - nor am I saying it's a bad idea either. I'm saying it's an idea.

I leave commentary on whether DFDL lets you create a repeating complex type directly without having to instantiate that type into an element to my esteemed colleagues. I suspect nobody will be surprised to find out it works the same way as XSD does...
Back to top
View user's profile Send private message
dogorsy
PostPosted: Wed Aug 07, 2013 6:39 am    Post subject: Reply with quote

Knight

Joined: 13 Mar 2013
Posts: 553
Location: Home Office

ottfried11 wrote:
I tried that.
it always points to the first choiceElement, which in this case is the 14332 structure.

How would you DECLARE the source variable?
I did not DECLARE it at all.


you do not declare the reference, as I said, it is dynamic.
and no, it should not point always to the same element,
try something simple

Code:

FOR source as refInSWEIOBody.choiceElement[] DO
CREATE LASTCHILD OF OutputRoot.XMLNSC.Test NAME 'MyField';
SET OutputRoot.XMLNSC.Test.MyField[<] = FIELDNAME(source.*);
END FOR;
and post the result


and the proof that it works is that you said in the post above that it works, so source.* is pointing to each of the elements in turn. So it is very likely that you are doing something wrong when using source.etc.etc
Back to top
View user's profile Send private message
j.f.sorge
PostPosted: Wed Aug 07, 2013 7:01 am    Post subject: Reply with quote

Master

Joined: 27 Feb 2008
Posts: 218

Why not use the following code (it should work although I did not use WMBT to create it)

Code:
DECLARE refSource REFERENCE TO refInSWEIOBody.choiceElement[1];
WHILE LASTMOVE(refSource) DO
--FOR source as refInSWEIOBody.choiceElement[] DO
      DECLARE refChild   REFERENCE TO refSource.<;   --will point to FIRSTCHILD
    --SET iSWEIOCount = iSWEIOCount + 1;       
    DECLARE chChild   CHARACTER FIELDNAME(refChild);
    --CASE FIELDNAME(source.*)
    CASE chChild
    WHEN 'structure14332' THEN
           --IF refInSWEIOBody.choiceElement[iSWEIOCount].structure14332.structureBody14332.messageStream.KTHANLimithoehe.length = 'DDD' THEN
           IF refChild.structureBody14332.messageStream.KTHANLimithoehe.length = 'DDD' THEN
              SET chKTHANLimithoehe = '0';
           ELSE
              --SET chKTHANLimithoehe = refInSWEIOBody.choiceElement[iSWEIOCount].structure14332.structureBody14332.messageStream.KTHANLimithoehe.value;
              SET chKTHANLimithoehe = refChild.structureBody14332.messageStream.KTHANLimithoehe.value;
           END IF;
    WHEN  'structure17836' THEN
            --IF refInSWEIOBody.choiceElement[iSWEIOCount].structure17836.structureBody17836.messageStream.WEITAFunktionstyp.length <> 'DDD' THEN
            IF refChild.structureBody17836.messageStream.WEITAFunktionstyp.length <> 'DDD' THEN
               --SET chWEITAFunktionstyp = refInSWEIOBody.choiceElement[iSWEIOCount].structure17836.structureBody17836.messageStream.WEITAFunktionstyp.value;
               SET chWEITAFunktionstyp = refChild.structureBody17836.messageStream.WEITAFunktionstyp.value;
            ELSE
               SET chWEITAFunktionstyp = 'ORD';
            END IF;
            --SET chWEITANummer = refInSWEIOBody.choiceElement[iSWEIOCount].structure17836.structureBody17836.messageStream.WEITANummer.value;
            SET chWEITANummer = refChild.structureBody17836.messageStream.WEITANummer.value;
       WHEN  'structure12856' THEN
              --SET chIDENTInstrument_Ident = refInSWEIOBody.choiceElement[iSWEIOCount].structure12856.structureBody12856.messageStream.IDENTInstrument_Ident.value;
              SET chIDENTInstrument_Ident = refChild.structureBody12856.messageStream.IDENTInstrument_Ident.value;
    END CASE;
    MOVE refSource NEXTSIBLING REPEAT NAME;
--END FOR;
END WHILE;

_________________
IBM Certified Solution Designer - WebSphere MQ V6.0
IBM Certified Solution Developer - WebSphere Message Broker V6.0
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2, 3, 4  Next Page 1 of 4

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » ESQL: access value in a choice group with unknown sequence
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.