Padding/justification only applies to simple xs:string types. They do not apply to complex types. An alternative would be to model the extra spaces as a terminator of your MilitaryDayTime element, e.g.

  <xs:element name="MilitaryDayTime"
    dfdl:lengthKind="implicit"
    dfdl:terminator="%SP;%SP;">

On 5/18/22 8:49 AM, Roger L Costello wrote:
Hi Folks,

My input contains slash-separated fields of fixed length. Here's an example 
input:

/05180801Z/

That represents:
Month = 05
Day = 18
Hour = 08
Minute = 01
Time zone = Z

The field may contain a choice of either a MonthDayTime element or a 
MilitaryDayTime element. The above example shows a MonthDayTime value. Here is 
a MilitaryDayTime value:

/211300Z /

That represents:
Day = 21
Hour = 13
Minute = 00
Time zone = Z

Notice the space following the time zone. The space is important because the 
field is exactly 9 characters long. The value doesn't take up the 9 characters, 
so it is padded with a space.

In my DFDL schema I specified these DFDL properties:

dfdl:lengthKind="explicit"
dfdl:length="9"
dfdl:lengthUnits="characters"
dfdl:textStringJustification="left"
dfdl:textStringPadCharacter="%SP;"

When I run the DFDL schema Daffodil generates two warning messages:

[warn] Schema Definition Warning: DFDL property was ignored: 
textStringPadCharacter="%SP;"
[warn] Schema Definition Warning: DFDL property was ignored: 
textStringJustification="left"

Below is the relevant portion of my DFDL schema. Why am I getting these 
warnings?

<xs:element name="TimeOfReturnToOperations" minOccurs="0"
             dfdl:lengthKind="explicit"
             dfdl:length="9"
             dfdl:lengthUnits="characters"
             dfdl:textStringJustification="left"
             dfdl:textStringPadCharacter="%SP;">
     <xs:complexType>
         <xs:choice dfdl:choiceLengthKind="implicit">
             <xs:element name="MonthDayTime">
                 <xs:complexType>
                     <xs:sequence dfdl:separator="">
                         <xs:element name="Month" type="non-zero-length-string" 
dfdl:lengthPattern="01|02|03|04|05|06|07|08|09|10|11|12"/>
                         <xs:element name="Day" type="non-zero-length-string" 
dfdl:lengthPattern="[0-9]{2}"/>
                         <xs:element name="Hour" type="non-zero-length-string" 
dfdl:lengthPattern="[0-9]{2}"/>
                         <xs:element name="Minute" type="non-zero-length-string" 
dfdl:lengthPattern="[0-9]{2}"/>
                         <xs:element name="TimeZone" type="non-zero-length-string" 
dfdl:lengthPattern="Z"/>
                     </xs:sequence>
                 </xs:complexType>
             </xs:element>
             <xs:element name="MilitaryDayTime">
                 <xs:complexType>
                     <xs:sequence dfdl:separator="">
                         <xs:element name="Day" type="non-zero-length-string" 
dfdl:lengthPattern="[0-9]{2}"/>
                         <xs:element name="Hour" type="non-zero-length-string" 
dfdl:lengthPattern="[0-9]{2}"/>
                         <xs:element name="Minute" type="non-zero-length-string" 
dfdl:lengthPattern="[0-9]{2}"/>
                         <xs:element name="TimeZone" type="non-zero-length-string" 
dfdl:lengthPattern="Z"/>
                     </xs:sequence>
                 </xs:complexType>
             </xs:element>
         </xs:choice>
     </xs:complexType>
</xs:element>

Reply via email to