My input contains a decimal value representing a latitude minutes. Here are several legal values:
74 74.1 74.12 74.123 76.1234 As you can see, the value may be a whole number, or it may have a decimal point followed by 1-4 digits. This works fine if the value is a whole number: <xs:element name="LatitudeMinutes" type="xs:decimal" dfdl:lengthKind="pattern" dfdl:lengthPattern="[0-9]{2}[0-9\.]*(?=([^0-9]))" dfdl:textNumberRep="standard" dfdl:textNumberCheckPolicy="strict" dfdl:textNumberPattern="00" dfdl:textStandardGroupingSeparator="," dfdl:textStandardDecimalSeparator="." dfdl:textStandardBase="10" dfdl:textNumberRounding="pattern"> </xs:element> But it fails if the value has a decimal point followed by digits. This works fine if the value has a decimal point followed by digits: <xs:element name="LatitudeMinutes" type="xs:decimal" dfdl:lengthKind="pattern" dfdl:lengthPattern="[0-9]{2}[0-9\.]*(?=([^0-9]))" dfdl:textNumberRep="standard" dfdl:textNumberCheckPolicy="strict" dfdl:textNumberPattern="00.0" dfdl:textStandardGroupingSeparator="," dfdl:textStandardDecimalSeparator="." dfdl:textStandardBase="10" dfdl:textNumberRounding="pattern"> </xs:element> But it fails if the value doesn't have a decimal point followed by digits. How to declare LatitudeMinutes so that it can parse any of the inputs shown above?