[DFDL-WG] Need dfdl:inputValueCalc and dfdl:outputValueCalc on same element
Steve Hanson
smh at uk.ibm.com
Tue Jul 26 03:50:36 EDT 2016
If I understand the example correctly, you have added 'payloadLength' to
the infoset as a convenience to the user, but at the same time you are
referencing it from the 'payload' element's dfdl:length property. Your
example could be changed to use the 'length' element instead:
<element name="length" type="xs:int"
dfdl:outputValueCalc="{ dfdl:contentLength(../payload) + 20 }">
<element name="payloadLength" type="xs:int"
dfdl:inputValueCalc="{ ../length - 20 }" />
<element name="payload" dfdl:length="{ ../length - 20 }">
<complexType>.....</complexType>
</element>
If we allow both input & output value calc on a element, it is saying that
on unparsing the element's value in the infoset is ignored, and its value
never appear in the data. So it's a place to hold a transient value, don't
we have variables for that?
Regards
Steve Hanson
IBM Integration Bus, Hursley, UK
Architect, IBM DFDL
Co-Chair, OGF DFDL Working Group
smh at uk.ibm.com
tel:+44-1962-815848
mob:+44-7717-378890
From: Mike Beckerle <mbeckerle.dfdl at gmail.com>
To: "dfdl-wg at ogf.org" <dfdl-wg at ogf.org>
Date: 19/07/2016 18:49
Subject: [DFDL-WG] Need dfdl:inputValueCalc and
dfdl:outputValueCalc on same element
Sent by: "dfdl-wg" <dfdl-wg-bounces at ogf.org>
So in PCAP format we find something like this:
<element name="length" type="xs:int"
dfdl:outputValueCalc="{ dfdl:contentLength(../payload) + 20 }">
<element name="payloadLength" type="xs:int"
dfdl:inputValueCalc="{ ../length - 20 }" />
<element name="payload" dfdl:length="{ ../payloadLength }">
<complexType>.....</complexType>
</element>
To make this unparse we really need the payloadLength element to carry
both an IVC and an OVC.
Otherwise when unparsing the dfdl:length expression on the payload element
can't be meaningful. We have an erratum that states that length
expressions are always re-evaluated when unparsing, so as to produce a
target length that can be used to insert padding/fillByte.
However, the spec currently says you cannot have both IVC and OVC on the
same element.
I do not recall why we have this restriction, other than trying to
prohibit things we didn't think were necessary, but it seems in this
situation to be needed.
Comments?
Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology |
www.tresys.com
Please note: Contributions to the DFDL Workgroup's email discussions are
subject to the OGF Intellectual Property Policy
--
dfdl-wg mailing list
dfdl-wg at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20160726/38c20545/attachment.html>
More information about the dfdl-wg
mailing list