Hi Steve, > I would guess that you have: > textNumberPadKind="padChar", > textNumberPadCharacter="f", and > textNumberJustification="left"
Actually, I looked at my defaults.dfdl.xsd file and it doesn't mention any of those properties. If those properties are not specified, do they default to the values you list? /Roger -----Original Message----- From: Steve Lawrence <[email protected]> Sent: Tuesday, June 25, 2019 2:14 PM To: [email protected] Subject: [EXT] Re: 0,100 --> parse --> 100 --> 100ff ... Huh? This is a good example of the difference between # and 0 pattern characters when unparsing. With the pattern "0,000", the value "100" will be padded with zero's and so will unparse to "0,100", which matches the expected length of 5. However, with the pattern "#,###", the value "100" will unparse to "100"--no comma is needed and it will not zero pad. But your test1 element is defined as having a length of 5 and the the unparsed value has a length of 3. In this case, Daffodil uses textNumberPadKind and related properties (textNumberPadCharacter, textNumberJustification, etc.) to pad the unparsed value up to the needed 5 characters. So I would guess that you have textNumberPadKind="padChar", textNumberPadCharacter="f", and textNumberJustification="left". Those three properties will cause Daffodil to add extra "f" characters as padding to the right of the string. I don't think I would say to never use the '#' character. There are certainly going to be times where you don't want extra padding characters, like in some delimited formats where numbers do not have explicit lengths. - Steve On 6/25/19 1:32 PM, Costello, Roger L. wrote: > Hello DFDL community, > > My input file has this: > > 0,100 > > 0,100 > > My DFDL schema is this: > > <xs:elementname="input"> > <xs:complexType> > <xs:sequencedfdl:separator="%NL;"dfdl:separatorPosition="infix"> > <xs:elementname="test1"type="xs:unsignedInt" > dfdl:length="5"dfdl:lengthKind="explicit" > dfdl:textNumberCheckPolicy="strict" > dfdl:textNumberPattern="#,###"/> > <xs:elementname="test2"type="xs:unsignedInt" > dfdl:length="5"dfdl:lengthKind="explicit" > dfdl:textNumberCheckPolicy="strict" > dfdl:textNumberPattern="0,000"/> </xs:sequence> > </xs:complexType> </xs:element> > > The output of parsing is this: > > <input> > <test1>100</test1> > <test2>100</test2> > </input> > > The output of unparsing is this: > > 100ff > 0,100 > > Huh? > > Why am I getting 100ff? > > I think the lesson learned is never use the pound (#) symbol in > dfdl:textNumberPattern. Do you agree? > > /Roger >
