E-mail: andy.edwards@uk.ibm.com
Snail-mail: MP211, Hursley park, Hursley, WINCHESTER, Hants, SO21 2JN
Phone (internal): 247222
Phone (external): 44-1962-817222
Desk: DE3 F16 | The Feynman problem solving Algorithm: 1) Write down the problem 2) Think real hard 3) Write down the answer -- Murray Gell-mann in the NY Times |
----- Original message -----
From: Steve Hanson/UK/IBM
To: DFDL-WG <dfdl-wg@ogf.org>
Cc: Alex Wood1/UK/IBM@IBMGB, Andrew Edwards/UK/IBM@IBMGB, Mark Frost/UK/IBM
Subject: Clarification for nil processing and zero length
Date: Fri, Mar 4, 2016 11:35 AM
The DFDL 1.0 spec current says:
9.3.2.1 Simple elementIf the result is length zero as described above, the representation is then established by checking, in order for:
1. nil representation (if %ES; is a literal nil value).2. empty representation.
3. normal representation (xs:string or xs:hexBinary only)
4. absent representation (if none of the prior representations apply).
But should bullet 1 be:
1. nil representation (if either %ES; or %WSP*; on its own is a literal nil value).
I added a test to IBM DFDL and found that setting dfdl:nilKind="literalValue" & dfdl:nilValue="%WSP*;" did not match an element value of empty string. That surprised me, and I think the IBM DFDL code is strictly implementing bullet 1. Using "%WSP*;" is useful for allowing zero or more white space to mean <nil>. I could use "%WSP+; %ES" to achieve the same goal but I'm not sure that was the intent here.
Quick response appreciated.
Regards
Steve Hanson
IBM Integration Bus, Hursley, UK
Architect, IBM DFDL
Co-Chair, OGF DFDL Working Group
smh@uk.ibm.com
tel:+44-1962-815848
mob:+44-7717-378890