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 » Multiple DFDL discriminators

Post new topic  Reply to topic
 Multiple DFDL discriminators « View previous topic :: View next topic » 
Author Message
petervh1
PostPosted: Mon Aug 19, 2024 6:32 am    Post subject: Multiple DFDL discriminators Reply with quote

Centurion

Joined: 19 Apr 2010
Posts: 135

Hi

I'm trying to model input data that looks like this:

Code:

002|1|20240801|2a26dd82-5533-4fcd-9da5-082a3c6f6f42|655|HX TOKAI POS|44.38|44.38|202408016551005218|0.00
004|6001097895108|COCONUT MILK SHOGUN 195G BOTTLE|10138400|10320206|27.98|1|2
002|1|20240801|2bdb900e-740e-4f5a-9f3a-fab834574542|655|HX TOKAI POS|37.98|37.98|202408016551005219|0.00
004|6001097895108|COCONUT MILK SHOGUN 165G BOTTLE|10138400|10320206|37.98|1|2
002|4|20240801|033d8e13-d099-4781-94f5-2e6224995048|655|HX TOKAI POS|675.34|154.36|2024080165510052122|0.00


My XSD looks like this:
Code:
<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:csv="http://www.ibm.com/dfdl/CommaSeparatedFormat" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions" xmlns:ibmSchExtn="http://www.ibm.com/schema/extensions">
    <xsd:import namespace="http://www.ibm.com/dfdl/CommaSeparatedFormat" schemaLocation="IBMdefined/CommaSeparatedFormat.xsd"/>
    <xsd:annotation>
      <xsd:appinfo source="http://www.ogf.org/dfdl/">
         <dfdl:format documentFinalTerminatorCanBeMissing="yes" encoding="{$dfdl:encoding}" escapeSchemeRef="csv:CSVEscapeScheme" ref="csv:CommaSeparatedFormat"/>
      <dfdl:defineEscapeScheme name="PipeEscapeScheme">
        <dfdl:escapeScheme escapeBlockEnd="003" escapeBlockStart="|" escapeCharacter="|" escapeEscapeCharacter="" escapeKind="escapeBlock" extraEscapedCharacters="%SP;" generateEscapeBlock="whenNeeded"/>
      </dfdl:defineEscapeScheme>
    </xsd:appinfo>
   </xsd:annotation>

<xsd:element ibmSchExtn:docRoot="true" name="VitalityCustomerSales_I_Purchase">
      <xsd:complexType>
         <xsd:sequence dfdl:separator="">
                              
            <xsd:element dfdl:occursCountKind="implicit" dfdl:terminator="%CR;%LF;" maxOccurs="unbounded" name="Purchase_header_record">
                        <xsd:annotation>
                              <xsd:appinfo source="http://www.ogf.org/dfdl/">
                              <dfdl:discriminator>{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}</dfdl:discriminator>
                              </xsd:appinfo>
                            </xsd:annotation>
                        
               <xsd:complexType>
                  <xsd:sequence>                  
                     <xsd:element fixed="002" ibmDfdlExtn:sampleValue="value1" name="Record_id" type="xsd:string">                     
                         </xsd:element>
                     <xsd:element ibmDfdlExtn:sampleValue="value2" name="No_of_items" type="xsd:string"/>
                     <xsd:element ibmDfdlExtn:sampleValue="value3" name="Trn_date" type="xsd:string"/>                     
                            <xsd:element ibmDfdlExtn:sampleValue="value4" name="Client_Account_Number" type="xsd:string"/>                                         
                            <xsd:element ibmDfdlExtn:sampleValue="value5" name="Branch_cd" type="xsd:string"/>
                            <xsd:element ibmDfdlExtn:sampleValue="value6" name="Branch_name" type="xsd:string"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Trn_amt" type="xsd:decimal"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Healthy_spend_amt" type="xsd:decimal"/>   
                            <xsd:element ibmDfdlExtn:sampleValue="value9" name="Trn_id" type="xsd:string"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Discovery_card_spend_amt" type="xsd:decimal"/>
                            </xsd:sequence>
               </xsd:complexType>
                 </xsd:element>                           
                           
                <xsd:element dfdl:occursCountKind="implicit" dfdl:terminator="%CR;%LF;" maxOccurs="unbounded" name="Purchase_detail_record">
                            <xsd:annotation>
                              <xsd:appinfo source="http://www.ogf.org/dfdl/">
                              <dfdl:discriminator>{/VitalityCustomerSales_I_Purchase/Purchase_detail_record/Record_id eq '004'}</dfdl:discriminator>
                              </xsd:appinfo>
                            </xsd:annotation>
               <xsd:complexType>
                  <xsd:sequence>                           
                            <xsd:element dfdl:escapeSchemeRef="PipeEscapeScheme" ibmDfdlExtn:sampleValue="value1" name="Record_id" type="xsd:string">                                                
                     </xsd:element>
                     <xsd:element ibmDfdlExtn:sampleValue="value2" name="Article_barcode" type="xsd:string"/>
                     <xsd:element ibmDfdlExtn:sampleValue="value3" name="Article_descr" type="xsd:string"/>                     
                            <xsd:element ibmDfdlExtn:sampleValue="value4" name="Article_id" type="xsd:string"/>                                         
                            <xsd:element ibmDfdlExtn:sampleValue="value5" name="BMC" type="xsd:string"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Article_price" type="xsd:decimal"/>
                            <xsd:element ibmDfdlExtn:sampleValue="value8" name="Vit_category" type="xsd:string"/>                                         
                            <xsd:element ibmDfdlExtn:sampleValue="value9" name="Quantity" type="xsd:string"/>                           
                       </xsd:sequence>
               </xsd:complexType>
                 </xsd:element>
                   
              </xsd:sequence>
         </xsd:complexType>
      </xsd:element>
   </xsd:schema>




My DFDL trace shows:
Quote:

********************* DFDL Parser Setup Starting *********************
Schema = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd
**********************************************************************



********************* DFDL Parser Starting *********************
Data = C:\Shoprite\VitalityCustomerSale\CheckersVitality_1.txt
Message = VitalityCustomerSales_I_Purchase (/VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd)
****************************************************************

19 Aug 2024, 16:08:49 info: Offset: 0. Parsing will start from root element 'VitalityCustomerSales_I_Purchase'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase), 91]

19 Aug 2024, 16:08:49 info: The default value of '%LF;' was assigned to variable 'outputNewLine' in namespace 'http://www.ogf.org/dfdl/dfdl-1.0/'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = , 133]

19 Aug 2024, 16:08:49 info: Offset: 0. Starting to process element 'VitalityCustomerSales_I_Purchase'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase), 82]

19 Aug 2024, 16:08:49 info: Offset: 0. Up to 'unbounded' occurrences of element 'Purchase_header_record' will be expected because occursCountKind='implicit' and maxOccurs='unbounded'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 163]

19 Aug 2024, 16:08:49 info: Offset: 0. Starting to process element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 72]

19 Aug 2024, 16:08:49 info: Offset: 0. Attempting expression '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' for element 'Purchase_header_record'.

19 Aug 2024, 16:08:49 info: CTDV1551E : DFDL expression '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' cannot be evaluated because the info set does not contain any elements matching the path reference '/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id'.

19 Aug 2024, 16:08:49 info: Offset: 0. Could not evaluate expression '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' for element 'Purchase_header_record' as one or more inputs have not yet been parsed.

19 Aug 2024, 16:08:49 info: Offset: 0. Starting to process element 'Record_id'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Record_id), 59]

19 Aug 2024, 16:08:49 info: Offset: 0. Found delimited value '002' for element 'Record_id'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Record_id), 95]

19 Aug 2024, 16:08:49 info: Offset: 3. Finished processing element 'Record_id'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Record_id), 59]

19 Aug 2024, 16:08:49 info: Offset: 0. Attempting expression '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' for element 'Purchase_header_record'.

19 Aug 2024, 16:08:49 info: Offset: 0. A DFDL discriminator with condition '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' evaluated to true while parsing 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 192]

19 Aug 2024, 16:08:49 info: Offset: 3. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 119]

19 Aug 2024, 16:08:49 info: Offset: 4. Starting to process element 'No_of_items'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::No_of_items), 61]

19 Aug 2024, 16:08:49 info: Offset: 4. Found delimited value '1' for element 'No_of_items'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::No_of_items), 95]

19 Aug 2024, 16:08:49 info: Offset: 5. Finished processing element 'No_of_items'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::No_of_items), 61]

19 Aug 2024, 16:08:49 info: Offset: 5. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 119]

19 Aug 2024, 16:08:49 info: Offset: 6. Starting to process element 'Trn_date'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_date), 58]

19 Aug 2024, 16:08:49 info: Offset: 6. Found delimited value '20240801' for element 'Trn_date'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_date), 99]

19 Aug 2024, 16:08:49 info: Offset: 14. Finished processing element 'Trn_date'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_date), 59]

19 Aug 2024, 16:08:49 info: Offset: 14. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 120]

19 Aug 2024, 16:08:49 info: Offset: 15. Starting to process element 'Client_Account_Number'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Client_Account_Number), 72]

19 Aug 2024, 16:08:49 info: Offset: 15. Found delimited value '2a26dd82-5533-4fcd-9da5-082a3c6f6f42' for element 'Client_Account_Number'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Client_Account_Number), 141]

19 Aug 2024, 16:08:49 info: Offset: 51. Finished processing element 'Client_Account_Number'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Client_Account_Number), 72]

19 Aug 2024, 16:08:49 info: Offset: 51. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 120]

19 Aug 2024, 16:08:49 info: Offset: 52. Starting to process element 'Branch_cd'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_cd), 60]

19 Aug 2024, 16:08:49 info: Offset: 52. Found delimited value '655' for element 'Branch_cd'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_cd), 96]

19 Aug 2024, 16:08:49 info: Offset: 55. Finished processing element 'Branch_cd'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_cd), 60]

19 Aug 2024, 16:08:49 info: Offset: 55. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 120]

19 Aug 2024, 16:08:49 info: Offset: 56. Starting to process element 'Branch_name'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_name), 62]

19 Aug 2024, 16:08:49 info: Offset: 56. Found delimited value 'HX TOKAI POS' for element 'Branch_name'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_name), 107]

19 Aug 2024, 16:08:49 info: Offset: 68. Finished processing element 'Branch_name'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_name), 62]

19 Aug 2024, 16:08:49 info: Offset: 68. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 120]

19 Aug 2024, 16:08:49 info: Offset: 69. Starting to process element 'Trn_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 58]

19 Aug 2024, 16:08:49 info: Offset: 69. Found delimited value '44.38' for element 'Trn_amt'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 96]

19 Aug 2024, 16:08:49 info: Offset: 74. The simple content region of element 'Trn_amt' was converted to logical value '44.38'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 109]

19 Aug 2024, 16:08:49 info: Offset: 74. Finished processing element 'Trn_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 58]

19 Aug 2024, 16:08:49 info: Offset: 74. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 120]

19 Aug 2024, 16:08:49 info: Offset: 75. Starting to process element 'Healthy_spend_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 68]

19 Aug 2024, 16:08:49 info: Offset: 75. Found delimited value '44.38' for element 'Healthy_spend_amt'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 106]

19 Aug 2024, 16:08:49 info: Offset: 80. The simple content region of element 'Healthy_spend_amt' was converted to logical value '44.38'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 119]

19 Aug 2024, 16:08:49 info: Offset: 80. Finished processing element 'Healthy_spend_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 68]

19 Aug 2024, 16:08:49 info: Offset: 80. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 120]

19 Aug 2024, 16:08:49 info: Offset: 81. Starting to process element 'Trn_id'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_id), 57]

19 Aug 2024, 16:08:49 info: Offset: 81. Found delimited value '202408016551005218' for element 'Trn_id'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_id), 108]

19 Aug 2024, 16:08:49 info: Offset: 99. Finished processing element 'Trn_id'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_id), 57]

19 Aug 2024, 16:08:49 info: Offset: 99. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 120]

19 Aug 2024, 16:08:49 info: Offset: 100. Starting to process element 'Discovery_card_spend_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Discovery_card_spend_amt), 76]

19 Aug 2024, 16:08:49 info: Offset: 100. Found delimited value '0.00' for element 'Discovery_card_spend_amt'. The delimiter was '%CR;%LF;'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Discovery_card_spend_amt), 120]

19 Aug 2024, 16:08:49 info: Offset: 104. The simple content region of element 'Discovery_card_spend_amt' was converted to logical value '0'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Discovery_card_spend_amt), 123]

19 Aug 2024, 16:08:49 info: Offset: 104. Finished processing element 'Discovery_card_spend_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Discovery_card_spend_amt), 76]

19 Aug 2024, 16:08:49 info: Offset: 104. Found terminator '%CR;%LF;' for 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 78]

19 Aug 2024, 16:08:49 info: Offset: 106. Finished processing element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 74]

19 Aug 2024, 16:08:49 info: Offset: 106. Optional element 'Purchase_header_record' encountered. The DFDL parser will return to this position if the element is not present in the data stream.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 170]

19 Aug 2024, 16:08:49 info: Offset: 106. Starting to process element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 74]

19 Aug 2024, 16:08:49 info: Offset: 106. Attempting expression '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' for element 'Purchase_header_record'.

19 Aug 2024, 16:08:49 info: Offset: 106. A DFDL discriminator with condition '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' evaluated to true while parsing 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record), 194]

19 Aug 2024, 16:08:49 info: Offset: 106. Starting to process element 'Record_id'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Record_id), 61]

19 Aug 2024, 16:08:49 info: Offset: 106. Found delimited value '004' for element 'Record_id'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Record_id), 97]

19 Aug 2024, 16:08:49 info: Offset: 109. Finished processing element 'Record_id'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Record_id), 61]

19 Aug 2024, 16:08:49 info: Offset: 109. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 121]

19 Aug 2024, 16:08:49 info: Offset: 110. Starting to process element 'No_of_items'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::No_of_items), 63]

19 Aug 2024, 16:08:49 info: Offset: 110. Found delimited value '6001097895108' for element 'No_of_items'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::No_of_items), 109]

19 Aug 2024, 16:08:49 info: Offset: 123. Finished processing element 'No_of_items'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::No_of_items), 63]

19 Aug 2024, 16:08:49 info: Offset: 123. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 121]

19 Aug 2024, 16:08:49 info: Offset: 124. Starting to process element 'Trn_date'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_date), 60]

19 Aug 2024, 16:08:49 info: Offset: 124. Found delimited value 'COCONUT MILK SHOGUN 195G BOTTLE' for element 'Trn_date'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_date), 124]

19 Aug 2024, 16:08:49 info: Offset: 155. Finished processing element 'Trn_date'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_date), 60]

19 Aug 2024, 16:08:49 info: Offset: 155. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 121]

19 Aug 2024, 16:08:49 info: Offset: 156. Starting to process element 'Client_Account_Number'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Client_Account_Number), 73]

19 Aug 2024, 16:08:49 info: Offset: 156. Found delimited value '10138400' for element 'Client_Account_Number'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Client_Account_Number), 114]

19 Aug 2024, 16:08:49 info: Offset: 164. Finished processing element 'Client_Account_Number'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Client_Account_Number), 73]

19 Aug 2024, 16:08:49 info: Offset: 164. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 121]

19 Aug 2024, 16:08:49 info: Offset: 165. Starting to process element 'Branch_cd'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_cd), 61]

19 Aug 2024, 16:08:49 info: Offset: 165. Found delimited value '10320206' for element 'Branch_cd'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_cd), 102]

19 Aug 2024, 16:08:49 info: Offset: 173. Finished processing element 'Branch_cd'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_cd), 61]

19 Aug 2024, 16:08:49 info: Offset: 173. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 121]

19 Aug 2024, 16:08:49 info: Offset: 174. Starting to process element 'Branch_name'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_name), 63]

19 Aug 2024, 16:08:49 info: Offset: 174. Found delimited value '27.98' for element 'Branch_name'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_name), 101]

19 Aug 2024, 16:08:49 info: Offset: 179. Finished processing element 'Branch_name'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Branch_name), 63]

19 Aug 2024, 16:08:49 info: Offset: 179. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 121]

19 Aug 2024, 16:08:49 info: Offset: 180. Starting to process element 'Trn_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 59]

19 Aug 2024, 16:08:49 info: Offset: 180. Found delimited value '1' for element 'Trn_amt'. The delimiter was '|'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 93]

19 Aug 2024, 16:08:49 info: Offset: 181. The simple content region of element 'Trn_amt' was converted to logical value '1'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 106]

19 Aug 2024, 16:08:49 info: Offset: 181. Finished processing element 'Trn_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Trn_amt), 59]

19 Aug 2024, 16:08:49 info: Offset: 181. Found separator '|' owned by the 'sequence' group contained within element 'Purchase_header_record'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence), 121]

19 Aug 2024, 16:08:49 info: Offset: 182. Starting to process element 'Healthy_spend_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 69]

19 Aug 2024, 16:08:49 info: Offset: 182. Found delimited value '2' for element 'Healthy_spend_amt'. The delimiter was '%CR;%LF;'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 110]

19 Aug 2024, 16:08:49 info: Offset: 183. The simple content region of element 'Healthy_spend_amt' was converted to logical value '2'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 116]

19 Aug 2024, 16:08:49 info: Offset: 183. Finished processing element 'Healthy_spend_amt'.
[dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_header_record/type::0/model::sequence/schemaElement::Healthy_spend_amt), 69]

19 Aug 2024, 16:08:49 error: CTDP3058E: Separator '|' not found at offset '183' for sequence within element '/VitalityCustomerSales_I_Purchase[1]/Purchase_header_record[2]'.

19 Aug 2024, 16:08:49 fatal: CTDP3058E: Separator '|' not found at offset '183' for sequence within element '/VitalityCustomerSales_I_Purchase[1]/Purchase_header_record[2]'.




1. Do I have my 2 discriminator statements pointing to the correct elements? Or should they be pointing to the first, innermost elements in each of the 2 sequences?

2. Why do I see
Quote:
CTDV1551E : DFDL expression '{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}' cannot be evaluated because the info set does not contain any elements matching the path reference '/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id'.

Is this just because the first record has not yet been parsed?

3. Why is the parser looking for a | separator at column 183?
Back to top
View user's profile Send private message
petervh1
PostPosted: Mon Aug 19, 2024 8:22 am    Post subject: Reply with quote

Centurion

Joined: 19 Apr 2010
Posts: 135

I changed the XSD to what I think is correct:

Code:
<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:csv="http://www.ibm.com/dfdl/CommaSeparatedFormat" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions" xmlns:ibmSchExtn="http://www.ibm.com/schema/extensions">
    <xsd:import namespace="http://www.ibm.com/dfdl/CommaSeparatedFormat" schemaLocation="IBMdefined/CommaSeparatedFormat.xsd"/>
    <xsd:annotation>
      <xsd:appinfo source="http://www.ogf.org/dfdl/">
         <dfdl:format documentFinalTerminatorCanBeMissing="yes" encoding="{$dfdl:encoding}" escapeSchemeRef="csv:CSVEscapeScheme" ref="csv:CommaSeparatedFormat"/>
      <dfdl:defineEscapeScheme name="PipeEscapeScheme">
        <dfdl:escapeScheme escapeBlockEnd="003" escapeBlockStart="|" escapeCharacter="|" escapeEscapeCharacter="" escapeKind="escapeBlock" extraEscapedCharacters="%SP;" generateEscapeBlock="whenNeeded"/>
      </dfdl:defineEscapeScheme>
    </xsd:appinfo>
   </xsd:annotation>

<xsd:element ibmSchExtn:docRoot="true" name="VitalityCustomerSales_I_Purchase">
      <xsd:complexType>
         <xsd:sequence dfdl:separator="">
                              
            <xsd:element dfdl:terminator="%CR;%LF;" name="Purchase_header_record">
                        <xsd:annotation>
                              <xsd:appinfo source="http://www.ogf.org/dfdl/">
                              <dfdl:discriminator>{/VitalityCustomerSales_I_Purchase/Purchase_header_record/Record_id eq '002'}</dfdl:discriminator>
                              </xsd:appinfo>
                            </xsd:annotation>
                        
               <xsd:complexType>
                  <xsd:sequence>                  
                     <xsd:element fixed="002" ibmDfdlExtn:sampleValue="value1" name="Record_id" type="xsd:string">                     
                         </xsd:element>
                     <xsd:element ibmDfdlExtn:sampleValue="value2" name="No_of_items" type="xsd:string"/>
                     <xsd:element ibmDfdlExtn:sampleValue="value3" name="Trn_date" type="xsd:string"/>                     
                            <xsd:element ibmDfdlExtn:sampleValue="value4" name="Client_Account_Number" type="xsd:string"/>                                         
                            <xsd:element ibmDfdlExtn:sampleValue="value5" name="Branch_cd" type="xsd:string"/>
                            <xsd:element ibmDfdlExtn:sampleValue="value6" name="Branch_name" type="xsd:string"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Trn_amt" type="xsd:decimal"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Healthy_spend_amt" type="xsd:decimal"/>   
                            <xsd:element ibmDfdlExtn:sampleValue="value9" name="Trn_id" type="xsd:string"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Discovery_card_spend_amt" type="xsd:decimal"/>
                            </xsd:sequence>
               </xsd:complexType>
                 </xsd:element>                           
                           
                <xsd:element dfdl:occursCountKind="implicit" dfdl:terminator="%CR;%LF;" maxOccurs="unbounded" name="Purchase_detail_record">
                            <xsd:annotation>
                              <xsd:appinfo source="http://www.ogf.org/dfdl/">
                              <dfdl:discriminator>{/VitalityCustomerSales_I_Purchase/Purchase_detail_record/Record_id eq '004'}</dfdl:discriminator>
                              </xsd:appinfo>
                            </xsd:annotation>
               <xsd:complexType>
                  <xsd:sequence>                           
                            <xsd:element dfdl:escapeSchemeRef="PipeEscapeScheme" ibmDfdlExtn:sampleValue="value1" name="Record_id" type="xsd:string">                                                
                     </xsd:element>
                     <xsd:element ibmDfdlExtn:sampleValue="value2" name="Article_barcode" type="xsd:string"/>
                     <xsd:element ibmDfdlExtn:sampleValue="value3" name="Article_descr" type="xsd:string"/>                     
                            <xsd:element ibmDfdlExtn:sampleValue="value4" name="Article_id" type="xsd:string"/>                                         
                            <xsd:element ibmDfdlExtn:sampleValue="value5" name="BMC" type="xsd:string"/>
                            <xsd:element dfdl:textNumberPattern="#0.0" dfdl:textStandardDecimalSeparator="." name="Article_price" type="xsd:decimal"/>
                            <xsd:element ibmDfdlExtn:sampleValue="value8" name="Vit_category" type="xsd:string"/>                                         
                            <xsd:element ibmDfdlExtn:sampleValue="value9" name="Quantity" type="xsd:string"/>                           
                       </xsd:sequence>
               </xsd:complexType>
                 </xsd:element>
                   
              </xsd:sequence>
         </xsd:complexType>
      </xsd:element>
   </xsd:schema>


Why then, does the DFDL trace show that DFDL parses the first 2 records correctly, and then tries to parse the 3rd record using the '002' format when the trace says that it found a match for the '004' discriminator?

Code:
19 Aug 2024, 18:10:57   info: Offset: 185. A DFDL discriminator with condition '{/VitalityCustomerSales_I_Purchase/Purchase_detail_record/Record_id eq '004'}' evaluated to true while parsing 'Purchase_detail_record'.
                        [dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_detail_record), 194]

19 Aug 2024, 18:10:57   info: Offset: 185. Starting to process element 'Record_id'.
                        [dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_detail_record/type::0/model::sequence/schemaElement::Record_id), 61]

19 Aug 2024, 18:10:57   info: Offset: 185. Found delimited value '002' for element 'Record_id'. The delimiter was '|'.
                        [dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_detail_record/type::0/model::sequence/schemaElement::Record_id), 97]

19 Aug 2024, 18:10:57   info: Offset: 188. Finished processing element 'Record_id'.
                        [dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_detail_record/type::0/model::sequence/schemaElement::Record_id), 61]
.
.
.
19 Aug 2024, 18:10:57   info: Offset: 241. Starting to process element 'Article_price'.
                        [dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_detail_record/type::0/model::sequence/schemaElement::Article_price), 65]

19 Aug 2024, 18:10:57   info: Offset: 241. Found delimited value 'HX TOKAI POS' for element 'Article_price'. The delimiter was '|'.
                        [dfdl = /VitalityCustomerSales/VitalityCustomerSales_I_Purchase.xsd, scd = #xscd(/schemaElement::VitalityCustomerSales_I_Purchase/type::0/model::sequence/schemaElement::Purchase_detail_record/type::0/model::sequence/schemaElement::Article_price), 110]

19 Aug 2024, 18:10:57   error: CTDP3043E: Text to number conversion error for value 'HX TOKAI POS'. Character 'H' at offset '0' cannot be parsed.


It then fails because the 6th field in '004' is a decimal field.
Back to top
View user's profile Send private message
timber
PostPosted: Sat Aug 24, 2024 6:52 am    Post subject: Reply with quote

Grand Master

Joined: 25 Aug 2015
Posts: 1292

See my response to the previous question.
Using dfdl:discriminator is not wrong, but dfdl:initiator is much simpler when each record starts with a distinct string of characters.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Multiple DFDL discriminators
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.