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
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
--
  dfdl-wg mailing list
  dfdl-wg@ogf.org
  https://www.ogf.org/mailman/listinfo/dfdl-wg
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU