|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
DFDL Position |
« View previous topic :: View next topic » |
Author |
Message
|
Thomas2ab |
Posted: Wed Jun 11, 2014 2:31 pm Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Thanks Kimbert.
Actually after working a bit more on my message, I changed a bit my previous question (sorry about that).
Actually let's say the first field is a string, defined to be on 50 characters, like company name, but the data coming is like 10 characters long. I do not want to have an error, I would actually like to have my field filled with the 10 first characters of the company name and the 40 other made with space, and then at the position 51 the next field etc.
And if it is an integer (int) value I would have to fill with 0 if the input data is less than the actual out put data size allowed.
Is it possible to do that?
I tried even with pattern and regular expression, but everytime, when I have a maxlength and that the input data is smaller, it throws and exception saying that the data should have this exact size (nor less neither more).
Thank you again for your help,
Regards, |
|
Back to top |
|
 |
kimbert |
Posted: Thu Jun 12, 2014 4:00 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
let's say the first field is a string, defined to be on 50 characters, like company name, but the data coming is like 10 characters long. I do not want to have an error, I would actually like to have my field filled with the 10 first characters of the company name and the 40 other made with space, and then at the position 51 the next field etc |
Yes. That is exactly the scenario that I was thinking of. The 40 space characters are called 'pad characters'.
You can instruct the DFDL parser to output pad characters by setting 'Pad Kind' to 'padChar' and 'Justification' to 'Left' and 'Pad character' to "%SP;" ( do not include the quote characters. %SP; is a DFDL mnemonic that represents a space character ).
Quote: |
And if it is an integer (int) value I would have to fill with 0 if the input data is less than the actual out put data size allowed.
Is it possible to do that? |
Yes.
Pad Character ='0'
Pad Kind = padChar
Justification='Right'
Quote: |
I tried even with pattern and regular expression, but everytime, when I have a maxlength and that the input data is smaller, it throws and exception saying that the data should have this exact size (nor less neither more). |
Please quote the error message. Maybe it needs to be improved. _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
Thomas2ab |
Posted: Thu Jun 12, 2014 5:41 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Thanks Kimbert it actually worked very well.
My only issue right now is regarding the the last spaces that are being trimed.
My input data is like this:
Code: |
<?xml version="1.0" encoding="UTF-8"?>
<Input>
<Header1>Header1</Header1>
<Header2>Header2</Header2>
<Header3>Header3</Header3>
<Header4>Header4</Header4>
<Field1>abc</Field1>
<Field2>def</Field2>
<Field3>this</Field3>
<Field4>xsdf123641xx</Field4>
<Field5>125dds8547sssqwerty</Field5>
<Input>
|
My DFDL is like this:
Code: |
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:csv="http://www.ibm.com/dfdl/CommaSeparatedFormat"
xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions"
xmlns:recFixLengthFieldsFmt="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.ibm.com/dfdl/CommaSeparatedFormat"
schemaLocation="IBMdefined/CommaSeparatedFormat.xsd" />
<xsd:import namespace="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
schemaLocation="IBMdefined/RecordFixLengthFieldFormat.xsd" />
<xsd:annotation>
<xsd:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format byteOrder="{$dfdl:byteOrder}" encoding="{$dfdl:encoding}"
escapeSchemeRef="recFixLengthFieldsFmt:RecordEscapeScheme"
occursCountKind="fixed" ref="recFixLengthFieldsFmt:RecordFixLengthFieldsFormat"
separatorPolicy="suppressed" documentFinalTerminatorCanBeMissing="yes" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element dfdl:lengthKind="delimited" name="singleLineMessage">
<xsd:complexType>
<xsd:sequence dfdl:separator=";" dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:lengthKind="delimited" name="field1"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field2"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field3"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field4"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited"
dfdl:occursCountKind="implicit" dfdl:terminator="%CR;%LF;%WSP*;"
maxOccurs="unbounded" name="fixedLengthRecord">
<xsd:complexType>
<xsd:sequence dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:length="3" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar" name="FixedA"
type="xsd:string" dfdl:textStringPadCharacter="%SP;"
dfdl:textStringJustification="left" />
<xsd:element dfdl:length="5" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar" name="FixedB"
type="xsd:string" dfdl:textStringPadCharacter="%SP;"
dfdl:textStringJustification="left" />
<xsd:element dfdl:length="10" dfdl:representation="text"
dfdl:textPadKind="padChar" name="FixedC"
dfdl:textStringPadCharacter="%SP;" dfdl:textStringJustification="left"
type="xsd:string" />
<xsd:element dfdl:length="40" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar" name="FixedD"
dfdl:textStringPadCharacter="%SP;" dfdl:textStringJustification="left"
type="xsd:string" />
<xsd:element dfdl:length="72" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar" name="FixedE"
type="xsd:string" dfdl:textStringPadCharacter="%SP;"
dfdl:textStringJustification="left" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
|
And my output is like this
Code: |
Header1;Header2;Header3;Header4;abcdef this xsdf123641xx 125dds8547sssqwerty
|
But actually I was expecting 53 spaces after the '125dds8547sssqwerty' value, as the size as to be 72.
I was expecting this:
Code: |
Header1;Header2;Header3;Header4;abcdef this xsdf123641xx 125dds8547sssqwerty
|
What parameter did I miss?
Furthermore, in order to get to that DFDL schema, I've been looking in this forum, and I'm a bit afraid I added a lot of parameters that are not necessary in my case, is there some that I could/should delete?
Thanks again,
Regards, |
|
Back to top |
|
 |
kimbert |
Posted: Thu Jun 12, 2014 5:50 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
actually I was expecting 53 spaces after the '125dds8547sssqwerty' value, as the size as to be 72 |
The definition of the field looks correct. What does the DFDL trace say about the last field?
Quote: |
I'm a bit afraid I added a lot of parameters that are not necessary in my case, is there some that I could/should delete? |
DFDL requires you to provide an explicit value for every parameter ( every DFDL property ).
However, you are allowed to define a 'block' of properties and reuse the set of properties on multiple elements. In the DFDL Editor this is called a 'Data Format'. You may need to click the 'Show all sections' button at the top of the editor in order to see it. When you have created your named format, you can reference it using the 'Data Format Reference' property.
A couple of other points:
- your complex elements should have 'Length Kind' set to 'implicit' ( not delimited ).
- are you sure that you want a terminator of CR/LF+whitespace on your 'fixedLengthRecord' element? _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
Thomas2ab |
Posted: Thu Jun 12, 2014 6:07 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Thanks Kimbert, my DFDL is now like this:
Code: |
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:csv="http://www.ibm.com/dfdl/CommaSeparatedFormat"
xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions"
xmlns:recFixLengthFieldsFmt="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.ibm.com/dfdl/CommaSeparatedFormat"
schemaLocation="IBMdefined/CommaSeparatedFormat.xsd" />
<xsd:import namespace="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
schemaLocation="IBMdefined/RecordFixLengthFieldFormat.xsd" />
<xsd:annotation>
<xsd:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format byteOrder="{$dfdl:byteOrder}"
documentFinalTerminatorCanBeMissing="yes" encoding="UTF-8"
escapeSchemeRef="recFixLengthFieldsFmt:RecordEscapeScheme"
occursCountKind="fixed" ref="recFixLengthFieldsFmt:RecordFixLengthFieldsFormat"
separatorPolicy="suppressed" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element dfdl:lengthKind="delimited" name="singleLineMessage">
<xsd:complexType>
<xsd:sequence dfdl:separator=";" dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:lengthKind="delimited" name="field1"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field2"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field3"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field4"
type="xsd:string" />
<xsd:element dfdl:lengthKind="implicit"
dfdl:occursCountKind="implicit" dfdl:terminator="" maxOccurs="unbounded"
name="fixedLengthRecord">
<xsd:complexType>
<xsd:sequence dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:length="3" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
ibmDfdlExtn:sampleValue="aaa" name="FixedA" type="xsd:string" />
<xsd:element dfdl:length="5" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedB" type="xsd:string" />
<xsd:element dfdl:length="10" dfdl:representation="text"
dfdl:textPadKind="padChar" dfdl:textStringJustification="left"
dfdl:textStringPadCharacter="%SP;" name="FixedC" type="xsd:string" />
<xsd:element dfdl:length="40" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedD" type="xsd:string" />
<xsd:element dfdl:length="72" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
|
It keep triming the final spaces.
Sorry to ask that but how can I get DFDL trace?
Thanks,
Regards, |
|
Back to top |
|
 |
Thomas2ab |
Posted: Thu Jun 12, 2014 6:24 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Ok sorry to have asked regarding the DFDL parser I actually found it!
I first tried with the input text message without the final spaces:
Code: |
Header1;Header2;Header3;Header4;abcdef this xsdf123641xx 125dds8547sssqwerty
|
and I got this log with 1 fatal:
Code: |
********************* DFDL Parser Setup Starting *********************
Schema = /MRMTeste/TesteCETIP.xsd
**********************************************************************
********************* DFDL Parser Starting *********************
Data = /MRMTeste/CETIP.txt
Message = singleLineMessage (/MRMTeste/TesteCETIP.xsd)
****************************************************************
Jun 12, 2014 11:22:51 AM info: Offset: 0. Parsing will start from root element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 76]
Jun 12, 2014 11:22:51 AM info: Offset: 0. Starting to process element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 67]
Jun 12, 2014 11:22:51 AM info: Offset: 0. Starting to process element 'field1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 56]
Jun 12, 2014 11:22:51 AM info: Offset: 0. Found delimited value: 'Header1' for element 'field1'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 97]
Jun 12, 2014 11:22:51 AM info: Offset: 7. Finished processing element 'field1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 56]
Jun 12, 2014 11:22:51 AM info: Offset: 7. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 114]
Jun 12, 2014 11:22:51 AM info: Offset: 8. Starting to process element 'field2'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 56]
Jun 12, 2014 11:22:51 AM info: Offset: 8. Found delimited value: 'Header2' for element 'field2'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 97]
Jun 12, 2014 11:22:51 AM info: Offset: 15. Finished processing element 'field2'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 15. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 12, 2014 11:22:51 AM info: Offset: 16. Starting to process element 'field3'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 16. Found delimited value: 'Header3' for element 'field3'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 98]
Jun 12, 2014 11:22:51 AM info: Offset: 23. Finished processing element 'field3'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 23. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 12, 2014 11:22:51 AM info: Offset: 24. Starting to process element 'field4'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 24. Found delimited value: 'Header4' for element 'field4'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 98]
Jun 12, 2014 11:22:51 AM info: Offset: 31. Finished processing element 'field4'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 31. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 12, 2014 11:22:51 AM info: Offset: 32. Up to '-1' occurrences of element 'fixedLengthRecord' will be expected because occursCountKind='implicit' and maxOccurs='-1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 145]
Jun 12, 2014 11:22:51 AM info: Offset: 32. Starting to process element 'fixedLengthRecord'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 68]
Jun 12, 2014 11:22:51 AM info: Offset: 32. Starting to process element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 32. Found fixed length value: 'abc' for element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 73]
Jun 12, 2014 11:22:51 AM info: Offset: 35. Finished processing element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 35. Starting to process element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 35. Found fixed length value: 'def' for element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 73]
Jun 12, 2014 11:22:51 AM info: Offset: 40. Finished processing element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 40. Starting to process element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 40. Found fixed length value: 'this' for element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 74]
Jun 12, 2014 11:22:51 AM info: Offset: 50. Finished processing element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 50. Starting to process element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 50. Found fixed length value: 'xsdf123641xx' for element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 82]
Jun 12, 2014 11:22:51 AM info: Offset: 90. Finished processing element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 57]
Jun 12, 2014 11:22:51 AM info: Offset: 90. Starting to process element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 57]
Jun 12, 2014 11:22:51 AM fatal: CTDP3000E: Unexpected end of data at byte offset '109' while parsing element 'FixedE'. The parser encountered the end of the data stream or the end of a parent element.
Jun 12, 2014 11:22:51 AM info: Offset: 0. Parsing will start from root element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 76]
|
Once I had the right amount of spaces:
Code: |
Header1;Header2;Header3;Header4;abcdef this xsdf123641xx 125dds8547sssqwerty
|
I got this log with 1 error:
Code: |
********************* DFDL Parser Setup Starting *********************
Schema = /MRMTeste/TesteCETIP.xsd
**********************************************************************
********************* DFDL Parser Starting *********************
Data = /MRMTeste/CETIP.txt
Message = singleLineMessage (/MRMTeste/TesteCETIP.xsd)
****************************************************************
Jun 12, 2014 11:16:40 AM info: Offset: 0. Parsing will start from root element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 76]
Jun 12, 2014 11:16:40 AM info: Offset: 0. Starting to process element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 67]
Jun 12, 2014 11:16:40 AM info: Offset: 0. Starting to process element 'field1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 56]
Jun 12, 2014 11:16:40 AM info: Offset: 0. Found delimited value: 'Header1' for element 'field1'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 97]
Jun 12, 2014 11:16:40 AM info: Offset: 7. Finished processing element 'field1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 56]
Jun 12, 2014 11:16:40 AM info: Offset: 7. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 114]
Jun 12, 2014 11:16:40 AM info: Offset: 8. Starting to process element 'field2'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 56]
Jun 12, 2014 11:16:40 AM info: Offset: 8. Found delimited value: 'Header2' for element 'field2'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 97]
Jun 12, 2014 11:16:40 AM info: Offset: 15. Finished processing element 'field2'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 15. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 12, 2014 11:16:40 AM info: Offset: 16. Starting to process element 'field3'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 16. Found delimited value: 'Header3' for element 'field3'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 98]
Jun 12, 2014 11:16:40 AM info: Offset: 23. Finished processing element 'field3'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 23. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 12, 2014 11:16:40 AM info: Offset: 24. Starting to process element 'field4'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 24. Found delimited value: 'Header4' for element 'field4'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 98]
Jun 12, 2014 11:16:40 AM info: Offset: 31. Finished processing element 'field4'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 31. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 12, 2014 11:16:40 AM info: Offset: 32. Up to '-1' occurrences of element 'fixedLengthRecord' will be expected because occursCountKind='implicit' and maxOccurs='-1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 145]
Jun 12, 2014 11:16:40 AM info: Offset: 32. Starting to process element 'fixedLengthRecord'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 68]
Jun 12, 2014 11:16:40 AM info: Offset: 32. Starting to process element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 32. Found fixed length value: 'abc' for element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 73]
Jun 12, 2014 11:16:40 AM info: Offset: 35. Finished processing element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 35. Starting to process element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 35. Found fixed length value: 'def' for element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 73]
Jun 12, 2014 11:16:40 AM info: Offset: 40. Finished processing element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 40. Starting to process element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 40. Found fixed length value: 'this' for element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 74]
Jun 12, 2014 11:16:40 AM info: Offset: 50. Finished processing element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 50. Starting to process element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 50. Found fixed length value: 'xsdf123641xx' for element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 82]
Jun 12, 2014 11:16:40 AM info: Offset: 90. Finished processing element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 90. Starting to process element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 57]
Jun 12, 2014 11:16:40 AM info: Offset: 90. Found fixed length value: '125dds8547sssqwerty' for element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 89]
Jun 12, 2014 11:16:40 AM info: Offset: 162. Finished processing element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 58]
Jun 12, 2014 11:16:40 AM info: Offset: 162. Finished processing element 'fixedLengthRecord'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 69]
Jun 12, 2014 11:16:40 AM info: Offset: 162. Optional element 'fixedLengthRecord' encountered. The DFDL parser will return to this position if the element is not present in the data stream.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 165]
Jun 12, 2014 11:16:40 AM info: Offset: 162. Starting to process element 'fixedLengthRecord'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 69]
Jun 12, 2014 11:16:40 AM info: Offset: 162. Starting to process element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 58]
Jun 12, 2014 11:16:40 AM error: CTDP3000E: Unexpected end of data at byte offset '162' while parsing element 'FixedA'. The parser encountered the end of the data stream or the end of a parent element.
Jun 12, 2014 11:16:40 AM info: offset: 162. Parser was unable to resolve data on the current branch and will evaluate the next available branch beginning at offset '162' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 222]
Jun 12, 2014 11:16:40 AM info: Offset: 162. Finished processing element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 69]
Jun 12, 2014 11:16:40 AM info: Offset: 0. Parsing will start from root element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 76]
|
Are you seeing something that could explain it?
Thanks again,
Regards[/code] |
|
Back to top |
|
 |
kimbert |
Posted: Fri Jun 13, 2014 12:59 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Nothing obvious - but usually these things are in the details somewhere.
Have you tried the obvious step of increasing the length of the input document until the DFDL parser either succeeds or issues a different error?
I assume that you already changed lengthKind to 'implicit' on the complex elements? And did you check that terminator on the fixed length complex element? _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
Thomas2ab |
Posted: Fri Jun 13, 2014 5:19 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Yes...
Please find my new DFDL based on your recommendations regarding the lenghtKind (to implicit) and terminator (that I removed):
Code: |
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:csv="http://www.ibm.com/dfdl/CommaSeparatedFormat"
xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions"
xmlns:recFixLengthFieldsFmt="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.ibm.com/dfdl/CommaSeparatedFormat"
schemaLocation="IBMdefined/CommaSeparatedFormat.xsd" />
<xsd:import namespace="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
schemaLocation="IBMdefined/RecordFixLengthFieldFormat.xsd" />
<xsd:annotation>
<xsd:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format byteOrder="{$dfdl:byteOrder}"
documentFinalTerminatorCanBeMissing="yes" encoding="UTF-8"
escapeSchemeRef="recFixLengthFieldsFmt:RecordEscapeScheme"
occursCountKind="fixed" ref="recFixLengthFieldsFmt:RecordFixLengthFieldsFormat"
separatorPolicy="suppressed" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element dfdl:lengthKind="delimited" name="singleLineMessage">
<xsd:complexType>
<xsd:sequence dfdl:separator=";" dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:lengthKind="delimited" name="field1"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field2"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field3"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field4"
type="xsd:string" />
<xsd:element dfdl:lengthKind="implicit"
dfdl:occursCountKind="implicit" dfdl:terminator="" maxOccurs="unbounded"
name="fixedLengthRecord">
<xsd:complexType>
<xsd:sequence dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:length="3" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
ibmDfdlExtn:sampleValue="aaa" name="FixedA" type="xsd:string" />
<xsd:element dfdl:length="5" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedB" type="xsd:string" />
<xsd:element dfdl:length="10" dfdl:representation="text"
dfdl:textPadKind="padChar" dfdl:textStringJustification="left"
dfdl:textStringPadCharacter="%SP;" name="FixedC" type="xsd:string" />
<xsd:element dfdl:length="40" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedD" type="xsd:string" />
<xsd:element dfdl:length="72" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
|
|
|
Back to top |
|
 |
kimbert |
Posted: Fri Jun 13, 2014 8:08 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
So why is this element using lengthKind='delimited'?
Code: |
<xsd:element dfdl:lengthKind="delimited" name="singleLineMessage">
<xsd:complexType>
<xsd:sequence dfdl:separator=";" dfdl:separatorPolicy="suppressedAtEndLax"> |
You didn't answer this question:
Quote: |
Have you tried the obvious step of increasing the length of the input document until the DFDL parser either succeeds or issues a different error? |
_________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
Thomas2ab |
Posted: Fri Jun 13, 2014 10:04 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Sorry Kimbert, you are right.
Please find my new DFDL schema:
Code: |
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:csv="http://www.ibm.com/dfdl/CommaSeparatedFormat"
xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions"
xmlns:recFixLengthFieldsFmt="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.ibm.com/dfdl/CommaSeparatedFormat"
schemaLocation="IBMdefined/CommaSeparatedFormat.xsd" />
<xsd:import namespace="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
schemaLocation="IBMdefined/RecordFixLengthFieldFormat.xsd" />
<xsd:annotation>
<xsd:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format byteOrder="{$dfdl:byteOrder}"
documentFinalTerminatorCanBeMissing="yes" encoding="UTF-8"
escapeSchemeRef="recFixLengthFieldsFmt:RecordEscapeScheme"
occursCountKind="fixed" ref="recFixLengthFieldsFmt:RecordFixLengthFieldsFormat"
separatorPolicy="suppressed" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element dfdl:lengthKind="implicit" name="singleLineMessage">
<xsd:complexType>
<xsd:sequence dfdl:separator=";" dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:lengthKind="delimited" name="field1"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field2"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field3"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field4"
type="xsd:string" />
<xsd:element dfdl:lengthKind="implicit"
dfdl:occursCountKind="implicit" dfdl:terminator="" maxOccurs="unbounded"
name="fixedLengthRecord">
<xsd:complexType>
<xsd:sequence dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:length="3" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
ibmDfdlExtn:sampleValue="aaa" name="FixedA" type="xsd:string" />
<xsd:element dfdl:length="5" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedB" type="xsd:string" />
<xsd:element dfdl:length="10" dfdl:representation="text"
dfdl:textPadKind="padChar" dfdl:textStringJustification="left"
dfdl:textStringPadCharacter="%SP;" name="FixedC" type="xsd:string" />
<xsd:element dfdl:length="40" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedD" type="xsd:string" />
<xsd:element dfdl:length="72" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
|
Then I tried with an input message, as you suggesdted, that had more space at the end than allowed (last elements only allows 72 characters and I set like 80). I got this trace with the fatal error:
fatal: CTDP3058E: Separator is missing for 'sequence' group contained within element 'singleLineMessage', xpath: '/singleLineMessage[1]' .
Code: |
********************* DFDL Parser Setup Starting *********************
Schema = /MRMTeste/TesteCETIP.xsd
**********************************************************************
********************* DFDL Parser Starting *********************
Data = /MRMTeste/CETIP.txt
Message = singleLineMessage (/MRMTeste/TesteCETIP.xsd)
****************************************************************
Jun 13, 2014 2:26:16 PM info: Offset: 0. Parsing will start from root element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 76]
Jun 13, 2014 2:26:16 PM info: Offset: 0. Starting to process element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 67]
Jun 13, 2014 2:26:16 PM info: Offset: 0. Starting to process element 'field1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 56]
Jun 13, 2014 2:26:16 PM info: Offset: 0. Found delimited value: 'Header1' for element 'field1'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 97]
Jun 13, 2014 2:26:16 PM info: Offset: 7. Finished processing element 'field1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field1), 56]
Jun 13, 2014 2:26:16 PM info: Offset: 7. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 114]
Jun 13, 2014 2:26:16 PM info: Offset: 8. Starting to process element 'field2'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 56]
Jun 13, 2014 2:26:16 PM info: Offset: 8. Found delimited value: 'Header2' for element 'field2'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 97]
Jun 13, 2014 2:26:16 PM info: Offset: 15. Finished processing element 'field2'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field2), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 15. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 13, 2014 2:26:16 PM info: Offset: 16. Starting to process element 'field3'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 16. Found delimited value: 'Header3' for element 'field3'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 98]
Jun 13, 2014 2:26:16 PM info: Offset: 23. Finished processing element 'field3'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field3), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 23. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 13, 2014 2:26:16 PM info: Offset: 24. Starting to process element 'field4'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 24. Found delimited value: 'Header4' for element 'field4'. The delimiter was ';'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 98]
Jun 13, 2014 2:26:16 PM info: Offset: 31. Finished processing element 'field4'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::field4), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 31. Found separator ';' owned by the 'sequence' group contained within element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence), 115]
Jun 13, 2014 2:26:16 PM info: Offset: 32. Up to '-1' occurrences of element 'fixedLengthRecord' will be expected because occursCountKind='implicit' and maxOccurs='-1'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 145]
Jun 13, 2014 2:26:16 PM info: Offset: 32. Starting to process element 'fixedLengthRecord'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 68]
Jun 13, 2014 2:26:16 PM info: Offset: 32. Starting to process element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 32. Found fixed length value: 'abc' for element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 73]
Jun 13, 2014 2:26:16 PM info: Offset: 35. Finished processing element 'FixedA'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedA), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 35. Starting to process element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 35. Found fixed length value: 'def' for element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 73]
Jun 13, 2014 2:26:16 PM info: Offset: 40. Finished processing element 'FixedB'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedB), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 40. Starting to process element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 40. Found fixed length value: 'this' for element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 74]
Jun 13, 2014 2:26:16 PM info: Offset: 50. Finished processing element 'FixedC'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedC), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 50. Starting to process element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 50. Found fixed length value: 'xsdf123641xx' for element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 82]
Jun 13, 2014 2:26:16 PM info: Offset: 90. Finished processing element 'FixedD'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedD), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 90. Starting to process element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 57]
Jun 13, 2014 2:26:16 PM info: Offset: 90. Found fixed length value: '125dds8547sssqwerty' for element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 89]
Jun 13, 2014 2:26:16 PM info: Offset: 162. Finished processing element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 58]
Jun 13, 2014 2:26:16 PM info: Offset: 162. Finished processing element 'fixedLengthRecord'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord), 69]
Jun 13, 2014 2:26:16 PM fatal: CTDP3058E: Separator is missing for 'sequence' group contained within element 'singleLineMessage', xpath: '/singleLineMessage[1]' .
Jun 13, 2014 2:26:16 PM info: Offset: 0. Parsing will start from root element 'singleLineMessage'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage), 76]
Jun 13, 2014 2:34:41 PM info: Offset: 0. Starting to process the DFDL info set.
Jun 13, 2014 2:34:41 PM info: Offset: 0. Starting to write root element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 59]
Jun 13, 2014 2:34:41 PM info: Offset: 0. Starting to process element 'FixedE'.
Jun 13, 2014 2:34:41 PM info: Padded left-justified text string 'aaaaaaaaaaaaaaaaaaaa' with '156' bytes, using pad byte '0x200x00', for element ''.
Jun 13, 2014 2:34:41 PM info: Offset: 0. Wrote text string value 'aaaaaaaaaaaaaaaaaaaa' for element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 88]
Jun 13, 2014 2:34:41 PM info: Offset: 72. Finished processing element 'FixedE'.
Jun 13, 2014 2:34:41 PM info: Offset: 72. Finished processing the DFDL info set.
Jun 13, 2014 2:34:41 PM info: Offset: 0. Starting to process the DFDL info set.
Jun 13, 2014 2:34:41 PM info: Offset: 0. Starting to write root element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 59]
Jun 13, 2014 2:34:41 PM info: Offset: 0. Starting to process element 'FixedE'.
Jun 13, 2014 2:34:41 PM info: Padded left-justified text string 'aaaaaaaaaaaaaaaaaaaa' with '156' bytes, using pad byte '0x200x00', for element ''.
Jun 13, 2014 2:34:41 PM info: Offset: 0. Wrote text string value 'aaaaaaaaaaaaaaaaaaaa' for element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 88]
Jun 13, 2014 2:34:41 PM info: Offset: 72. Finished processing element 'FixedE'.
Jun 13, 2014 2:34:41 PM info: Offset: 72. Finished processing the DFDL info set.
Jun 13, 2014 2:34:58 PM info: Offset: 0. Starting to process the DFDL info set.
Jun 13, 2014 2:34:58 PM info: Offset: 0. Starting to write root element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 59]
Jun 13, 2014 2:34:58 PM info: Offset: 0. Starting to process element 'FixedE'.
Jun 13, 2014 2:34:58 PM info: Padded left-justified text string 'aaaaaaaaaaaaaaaaaaaa' with '156' bytes, using pad byte '0x200x00', for element ''.
Jun 13, 2014 2:34:58 PM info: Offset: 0. Wrote text string value 'aaaaaaaaaaaaaaaaaaaa' for element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 88]
Jun 13, 2014 2:34:58 PM info: Offset: 72. Finished processing element 'FixedE'.
Jun 13, 2014 2:34:58 PM info: Offset: 72. Finished processing the DFDL info set.
Jun 13, 2014 2:34:58 PM info: Offset: 0. Starting to process the DFDL info set.
Jun 13, 2014 2:34:58 PM info: Offset: 0. Starting to write root element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 59]
Jun 13, 2014 2:34:58 PM info: Offset: 0. Starting to process element 'FixedE'.
Jun 13, 2014 2:34:58 PM info: Padded left-justified text string 'aaaaaaaaaaaaaaaaaaaa' with '156' bytes, using pad byte '0x200x00', for element ''.
Jun 13, 2014 2:34:58 PM info: Offset: 0. Wrote text string value 'aaaaaaaaaaaaaaaaaaaa' for element 'FixedE'.
[dfdl = /MRMTeste/TesteCETIP.xsd, scd = #xscd(/schemaElement::singleLineMessage/type::0/model::sequence/schemaElement::fixedLengthRecord/type::0/model::sequence/schemaElement::FixedE), 88]
Jun 13, 2014 2:34:58 PM info: Offset: 72. Finished processing element 'FixedE'.
Jun 13, 2014 2:34:58 PM info: Offset: 72. Finished processing the DFDL info set.
|
I then tried with an input message where the last part had the exact length (72) and then it worked without error. |
|
Back to top |
|
 |
kimbert |
Posted: Sun Jun 15, 2014 11:30 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
The answers are all there in the DFDL trace. Keep thinking...we cannot do all of it for you  _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
Thomas2ab |
Posted: Mon Jun 16, 2014 6:34 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Hello Kimbert,
I added separator="" at the top of the XSD and it worked!
Thanks again,
Regards, |
|
Back to top |
|
 |
Thomas2ab |
Posted: Thu Sep 18, 2014 8:50 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Hello Kimbert,
Just a small question based on the following xsd:
Code: |
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:csv="http://www.ibm.com/dfdl/CommaSeparatedFormat"
xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmDfdlExtn="http://www.ibm.com/dfdl/extensions"
xmlns:recFixLengthFieldsFmt="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.ibm.com/dfdl/CommaSeparatedFormat"
schemaLocation="IBMdefined/CommaSeparatedFormat.xsd" />
<xsd:import namespace="http://www.ibm.com/dfdl/RecordFixLengthFieldFormat"
schemaLocation="IBMdefined/RecordFixLengthFieldFormat.xsd" />
<xsd:annotation>
<xsd:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format byteOrder="{$dfdl:byteOrder}"
documentFinalTerminatorCanBeMissing="yes" encoding="UTF-8"
escapeSchemeRef="recFixLengthFieldsFmt:RecordEscapeScheme"
occursCountKind="fixed" ref="recFixLengthFieldsFmt:RecordFixLengthFieldsFormat"
separatorPolicy="suppressed" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element dfdl:lengthKind="implicit" name="singleLineMessage">
<xsd:complexType>
<xsd:sequence dfdl:separator="" dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:lengthKind="delimited" name="field1"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field2"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field3"
type="xsd:string" />
<xsd:element dfdl:lengthKind="delimited" name="field4"
type="xsd:string" />
<xsd:element dfdl:lengthKind="implicit"
dfdl:occursCountKind="implicit" dfdl:terminator="" maxOccurs="unbounded"
name="fixedLengthRecord">
<xsd:complexType>
<xsd:sequence dfdl:separatorPolicy="suppressedAtEndLax">
<xsd:element dfdl:length="3" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
ibmDfdlExtn:sampleValue="aaa" name="FixedA" type="xsd:string" />
<xsd:element dfdl:length="5" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedB" type="xsd:string" />
<xsd:element dfdl:length="10" dfdl:representation="text"
dfdl:textPadKind="padChar" dfdl:textStringJustification="left"
dfdl:textStringPadCharacter="%SP;" name="FixedC" type="xsd:string" />
<xsd:element dfdl:length="40" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedD" type="xsd:string" />
<xsd:element dfdl:length="72" dfdl:lengthKind="explicit"
dfdl:representation="text" dfdl:textPadKind="padChar"
dfdl:textStringJustification="left" dfdl:textStringPadCharacter="%SP;"
name="FixedE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema> |
In the case where one of the Fixed* field is bigger than the value of the dfdl:length property, I would like the output to be truncated to the dfdl:lenght value and not throw an error.
Is there a property that would let me do that?
Thanks!
Regards, |
|
Back to top |
|
 |
kimbert |
Posted: Fri Sep 19, 2014 12:53 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
I suggest that you look for the word 'truncate' in the DFDL specification. Or type 'DFDL truncate' into Google. _________________ Before you criticize someone, walk a mile in their shoes. That way you're a mile away, and you have their shoes too. |
|
Back to top |
|
 |
Thomas2ab |
Posted: Fri Sep 19, 2014 3:41 am Post subject: |
|
|
Acolyte
Joined: 07 Mar 2014 Posts: 51
|
Hello Kimbert,
I actually found the dfdl:truncateSpecifiedLengthString (='yes') property that seems perfect for what I want, but that property is not supported by IBM.
So what would be the other property?
Thanks again,
Regards, |
|
Back to top |
|
 |
|
|
|
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
|
|
|
|