
WG agreed that an error function is needed, action 288 raised. No Action 288 Decide on error function specification (Mike) 5/7: An error function is useful for expressions when unparsing. Mike to evaluate XPath fn:error(). 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 From: Mike Beckerle <mbeckerle.dfdl@gmail.com> To: "dfdl-wg@ogf.org" <dfdl-wg@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@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@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@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@uk.ibm.com tel:+44-1962-815848 From: Mike Beckerle <mbeckerle.dfdl@gmail.com> To: dfdl-wg@ogf.org, Date: 24/07/2013 16:46 Subject: [DFDL-WG] still no need for fn:error Sent by: dfdl-wg-bounces@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@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@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