|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Multiple DFDL discriminators |
« View previous topic :: View next topic » |
Author |
Message
|
petervh1 |
Posted: Mon Aug 19, 2024 6:32 am Post subject: Multiple DFDL discriminators |
|
|
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 |
|
 |
petervh1 |
Posted: Mon Aug 19, 2024 8:22 am Post subject: |
|
|
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 |
|
 |
timber |
Posted: Sat Aug 24, 2024 6:52 am Post subject: |
|
|
 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 |
|
 |
|
|
 |
|
Page 1 of 1 |
|
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
|
|
|
|