[DFDL-WG] still no need for fn:error

Steve Hanson smh at uk.ibm.com
Thu Jun 16 12:44:07 EDT 2016


Yes I can see the use-case for use during unparsing when asserts can not 
be used.  Will add to agenda for future WG call.

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:   14/06/2016 17:10
Subject:        Re: [DFDL-WG] still no need for fn:error
Sent by:        "dfdl-wg" <dfdl-wg-bounces at ogf.org>



I want to re-open the discussion of fn:error.

Previously we said it was not needed because an assert could be used.

However, we've now run into where we want to cause an error, during 
unparsing, during outputValueCalc.

 <xs:element name="Protocol" type="pcap:bit" dfdl:length="8"
           dfdl:outputValueCalc="{ 
           if (fn:exists(../../pcap:ICMPv4)) then 1
           else if (fn:exists(../../pcap:TransportLayer/pcap:TCP )) then 6
           else if (fn:exists(../../pcap:TransportLayer/pcap:UDP )) then 
17
           else -1 }"/>

That -1 at the end. That's an error case. We really want 
fn:error("Unrecognized protocol.") 

We can't change to a dfdl:assert, because assertions aren't evaluated when 
unparsing. 

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


On Thu, Jul 25, 2013 at 9:16 AM, Mike Beckerle <mbeckerle.dfdl at gmail.com> 
wrote:
Respin of this example:

Here's the example as suggested by Jonathan of how to issue an error that 
I previously was suggesting needed fn:error. I'm convinced this is 
sufficient and we can avoid the need for fn:error now.

<xs:element name="magic_number" type="ex:uint32" 
dfdl:byteOrder="bigEndian">
 <xs:annotation>
   <xs:appinfo source="http://www.ogf.org/dfdl/">
     <dfdl:assert 
       test="{ (xs:unsignedInt(.) eq dfdl:unsignedInt('xa1b2c3d4')) |
               (xs:unsignedInt(.) eq dfdl:unsignedInt('xd4c3b2a1')) }"  
       message="{ fn:concat(
                     'Magic number ', 
                     dfdl:hexBinary(dfdl:unsignedInt(.)),
                     ' was not 0xA1B2C3D4 (for bigEndian) or 0xD4C3B2A1 
(for littleEndian).' }" />
   <dfdl:setVariable ref="ex:bOrd">{ xs:unsignedInt(.) }<dfdl:setVariable>
   </xs:appinfo>
 </xs:annotation>
</xs:element>


On Wed, Jul 24, 2013 at 11:58 AM, Steve Hanson <smh at uk.ibm.com> wrote:
Mike,  I think you meant: 

       test="{ (xs:unsignedInt(.) eq dfdl:unsignedInt('xa1b2c3d4')) |
               (xs:unsignedInt(.) eq dfdl:unsignedInt('xd4c3b2a1')) }" 


Regards

Steve Hanson
Architect, IBM 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:        dfdl-wg at ogf.org, 
Date:        24/07/2013 16:46 
Subject:        [DFDL-WG] still no need for fn:error 
Sent by:        dfdl-wg-bounces at ogf.org 



Here's the example as suggested by Jonathan of how to issue an error that 
I previously was suggesting needed fn:error. I'm convinced this is 
sufficient and we can avoid the need for fn:error now.

<xs:element name="magic_number" type="ex:uint32" 
dfdl:byteOrder="bigEndian">
 <xs:annotation>
   <xs:appinfo source="http://www.ogf.org/dfdl/">
     <dfdl:assert 
       test="{ (xs:unsignedInt(.) eq dfdl:unsignedInt('xa1b2c3d4')) |
               (xs:unsignedInt(.) eq dfdl:unsignedInt('xd4c3b2a1')) }"  
       message="{ fn:concat(
                     'Magic number ', 
                     dfdl:hexBinary(dfdl:unsignedInt(.)),
                     ' was not 0xA1B2C3D4 (for bigEndian) or 0xD4C3B2A1 
(for littleEndian).' }" />
   <dfdl:setVariable ref="ex:bOrd">{ xs:unsignedInt(.) }<dfdl:setVariable>
   </xs:appinfo>
 </xs:annotation>
</xs:element>


-- 
Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology | 
www.tresys.com
--
 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



-- 
Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology | 
www.tresys.com

--
  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/20160616/5c1b7bec/attachment.html>


More information about the dfdl-wg mailing list