[DFDL-WG] Fw: setVariable with no value set - supported?

Steve Hanson smh at uk.ibm.com
Thu Nov 22 07:24:39 EST 2012


Proposal to allow empty string to be used as a value for DFDL variables of 
type xs:string and xs:hexBinary (or derived from them) without resorting 
to using an expression.

To set empty string use the attribute syntax, eg:

<dfdl:defineVariable name="myVar" type="xs:string" defaultValue=""/> 
<dfdl:newVariableInstance ref="myVar" defaultValue=""/> 
<dfdl:setVariable ref="myVar" value=""/> 

The following are schema definition errors as they do not set the value to 
anything.

<dfdl:setVariable ref="myVar"></dfdl:setVariable> 
<dfdl:setVariable ref="myVar"/> 

That allows us to apply a semantic to these syntaxes in a future DFDL 
release if we need to (eg, unsets the value).

Regards

Steve Hanson
Architect, Data Format Description Language (DFDL)
Co-Chair, OGF DFDL Working Group
IBM SWG, Hursley, UK
smh at uk.ibm.com
tel:+44-1962-815848



From:   Steve Hanson/UK/IBM
To:     Mike Beckerle <mbeckerle.dfdl at gmail.com>, 
Cc:     Mark Frost/UK/IBM, Tim Kimber/UK/IBM at IBMGB
Date:   21/11/2012 09:48
Subject:        Re: [DFDL-WG] Fw: setVariable with no value set - 
supported?


Here's what Sandy had to say on this. He raised a good point about the 
future possibility of unsetting a variable using the empty syntax. 

Steve Hanson
Hi Sandy - please can you ping back when free ? Ta! 
Sandy (S.) Gao
hi steve 
Steve Hanson
Hi 
◄
From DFDL WG call today... 
◄
2. What is correct syntax for setting the value of a variable to empty 
string? 
DFDL variables allow both XSDL lexical form and DFDL expressions as 
values, so it seems
plausible that <dfdl:setVariable ref="x" value=""/> or even 
<dfdl:setVariable ref="x"/> is an allowed
syntax for setting the value of a string or hexBinary variable to empty 
string
 
◄
What's your opinion here? 
◄
Syntax for setting a DFDL variable to empty string. 
Sandy (S.) Gao
the first looks reasonable. if you want to distinguish between an unset 
value / null value vs. empty value, then you may not want to use the 
second. in xml, there's a difference between an attribute that's not 
present and an attribute with empty value. 
◄
unless you are using element content as the value for the second case. 
Steve Hanson
That's the issue - DFDL treats the attr form and element form as 
equivalent 
Sandy (S.) Gao
so for non-empty value, you could <setV ... value="abc"/> or <setV 
...>abc</setV>? 
Steve Hanson
correct 
Sandy (S.) Gao
ic... then i suppose you need to be consistent and allow both of those 
forms. 
◄
but can someone specify a null value? or unset a variable? 
Steve Hanson
null not allowed 
◄
I don't think we allow unsetting either 
◄
Good points though 
Sandy (S.) Gao
if a value is required, then i don't see any issue in this approach. 
Steve Hanson
ok - I will raise the unset issue, as we don't want to box ourselves in 
for future 
◄
thanks Sandy 
Sandy (S.) Gao
np... i guess you'll need to add a new element e.g. <unsetValue> or a 
special value <setV...>##unset</setV> to support it. 
Steve Hanson
yes - if we don't allow the empty element + missing attr to mean that 
Sandy (S.) Gao
exactly 

Regards

Steve Hanson
Architect, Data Format Description Language (DFDL)
Co-Chair, OGF DFDL Working Group
IBM SWG, Hursley, UK
smh at uk.ibm.com
tel:+44-1962-815848




From:   Mike Beckerle <mbeckerle.dfdl at gmail.com>
To:     Steve Hanson/UK/IBM at IBMGB, 
Date:   19/11/2012 15:11
Subject:        Re: [DFDL-WG] Fw: setVariable with no value set - 
supported?




Here is the way I would set a variable to the empty string.

<dfdl:setVariable ref="someQName">{ "" }</dfdl:setVariable>

Note that the value is an expression and so must have the {...} surround, 
the expression returns an empty string as its value.

If you don't mind quoting hell, then

<dfdl:setVariable ref="someQName" value='{ "" }'/>

would also work.

The DFDL validator doesn't catch the error about the value attribute being 
missing because both the above forms are accepted and XML Schema's 
validation can't enforce an OR of  "you have to have an element child 
value OR the value attribute".

This check has to be done by the DFDL implementation itself, not just XSD 
validation of the DFDL annotations. 

On Mon, Nov 19, 2012 at 9:34 AM, Steve Hanson <smh at uk.ibm.com> wrote:
See below... 

Regards

Steve Hanson
Architect, Data Format Description Language (DFDL)
Co-Chair, OGF DFDL Working Group
IBM SWG, Hursley, UK
smh at uk.ibm.com
tel:+44-1962-815848 
----- Forwarded by Steve Hanson/UK/IBM on 19/11/2012 14:23 ----- 

From:        Steve Hanson/UK/IBM 
To:        Mark Frost/UK/IBM, 
Cc:        Shane Cartledge/Toronto/IBM at IBMCA, Anita 
Leung/Toronto/IBM at IBMCA 
Date:        16/11/2012 11:46 
Subject:        Re: setVariable with no value set - supported? 


The specific example that Shane gives is invalid anyway as you can't set 
the value of one of the pre-defined DFDL variables. Assuming a realistic 
example like: 

<dfdl:setVariable ref="myVar"/> 

I'm wondering how you would set empty string for an element of type 
xs:string or xs:hexBinary. 

<dfdl:setVariable ref="myVar" value=""/> 

But why isn't that the same as 

<dfdl:setVariable ref="myVar"></dfdl:setVariable> 

which in XML rules is equivalent to: 

<dfdl:setVariable ref="myVar"/> 

I will raise with the DFDL WG. 

Thanks

Steve Hanson
Architect, Data Format Description Language (DFDL)
Co-Chair, OGF DFDL Working Group
IBM SWG, Hursley, UK
smh at uk.ibm.com
tel:+44-1962-815848 



From:        Mark Frost/UK/IBM 
To:        Shane Cartledge/Toronto/IBM at IBMCA, Steve Hanson/UK/IBM at IBMGB, 
Cc:        Anita Leung/Toronto/IBM at IBMCA 
Date:        16/11/2012 11:19 
Subject:        Re: setVariable with no value set - supported? 


Hi Shane, 

While the spec isn't super-specific, I'd interpret it to mean "you must 
give exactly one of the value attribute or element value" 

Spec Section 7.9 : 
        "The syntax supports both a dfdl:value attribute and the 'value' 
being specified by the element value. Only one or the other may be 
present. (Schema definition error otherwise.)" 

Steve: 
        do you think altering the spec wording above to something like "
Exactly one of the dfdl:value or the element value must be present. 
 (Schema definition error otherwise.)" 


Regards,
Mark Frost
_____________________________________
MP 211, IBM Hursley, Winchester, SO21 2JN
Phone: (01962) 817009 or x247009
Email: frostmar at uk.ibm.com 




From:        Shane Cartledge/Toronto/IBM at IBMCA 
To:        Mark Frost/UK/IBM at IBMGB, 
Cc:        Anita Leung/Toronto/IBM at IBMCA 
Date:        15/11/2012 22:56 
Subject:        setVariable with no value set - supported? 


Hi Mark, 

Do you know if DFDL should supports a setVariable with no value set? 
Thought this may have already come up with your runtime testing. 

For example: 

<dfdl:setVariable ref="dfdl:binaryFloatRep"/> 

The DFDL specification is not clear on this point, and the DFDL validator 
does not flag it as an error. 

Thanks. 

Shane Cartledge
Business Integration Tooling
Phone: 1-905-413-5171, Tie Line: 313-5171


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 at ogf.org
  https://www.ogf.org/mailman/listinfo/dfdl-wg



-- 
Mike Beckerle | OGF DFDL WG Co-Chair 
Tel:  781-330-0412


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

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20121122/ba6a0b63/attachment-0001.html>


More information about the dfdl-wg mailing list