[DFDL-WG] [DFDL4S]: Results of OGF DFDL WG Call Agenda 2016-02-16

Steve Hanson smh at uk.ibm.com
Thu Mar 3 12:05:29 EST 2016


Michele, Rui

1) This is a deviation from the DFDL 1.0 specification and should be 
corrected. The context for the evaluation of a DFDL discriminator (or 
assert or indeed any DFDL expression) is the object on which the 
annotation occurs (if expression is on an element) or the nearest parent 
element (if expression is on a sequence or choice). 

2) Looking at the kinds of tests you are doing with dmx:assertExpression, 
I think you could use dfdl:assert with a recoverableException. 

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:   Michele Zundo <michele.zundo at esa.int>
To:     Steve Hanson/UK/IBM at IBMGB, Mike Beckerle <mbeckerle at tresys.com>, 
Montserrat Piñol <mpinol at eopp.esa.int>, Maurizio De Bartolomei 
<mdebartolomei at eopp.esa.int>, Rui Mestre <rui.mestre at deimos.com.pt>, 
DFDL-WG <dfdl-wg at ogf.org>
Date:   03/03/2016 16:05
Subject:        [DFDL4S]: Results of OGF DFDL WG Call Agenda 2016-02-16



Dear Steve/Mike,

here few considerations regarding the 2 points in the MoM:



  1) Regarding the evaluation of the XPath expressions in the 
dfdl:discriminator tests:


From: "Rui Mestre (DME)" <rui.mestre at deimos.com.pt>
 
      Our implementation of the DFDL parser is based on a slightly 
different interpretation of the way the paths are applied.
Our approach is based on the fact that the discriminator expression is not 
being evaluated at the level of the element
containing the discriminator but instead at the level of the type 
containing such element.

      In the example at hand the type TypeMasterChId is defined with an 
element  "Transfer_Frame_Version" followed by a "choice" among several 
alternative elements Spacecraft_Id_V*. So the decision of which "choice" 
branch to choose is done while "located" at the root level of 
TypeMasterChId. While parsing the sub-components of TypeMasterChId the 
several branches of the "choice" construct are evaluated (in order) and 
the first one evaluating to "true" is the one selected. Hence the relative 
path is written in reference to the top level of the type. Therefore in 
such cases the paths start with "./" instead of "../".


2) dfdl:assert vs dmx:assertExpression

The question from Steve:
“Also you said that you saw no need to implement DFDL assert - so what are 
the dmx:assertExpression attributes doing?   “

(Maurizio De Bartolomei) : as far as I understood, the DFDL assert shall 
be used to check that data is well formed (i.e. the data is compliant to a 
given structure and can be parsed) and not for data validation (i.e. 
inspecting the content of a given element and comparing against an 
expected value).
The dmx:assertExpression does not check that the data is well formed but 
only checks the value of a given item against an expected value,  if the 
value is different a message is returned. 
This can be improved by either changing the expression name (i.e. 
dmx:checkExpression) or investigate if DFDL provides already suitable 
expressions for content validation without loosing the compactness and 
clarity of dmx:assertExpression).

From: "Rui Mestre (DME)" <rui.mestre at deimos.com.pt>

          Regarding the use of dmx:assertExpression (as opposed to 
dfdl:assert) we fully agree with Maurizio's answer above
About his statement "(...)or investigate if DFDL provides already suitable 
expressions for content validation without loosing the compactness and 
clarity of dmx:assertExpression" we had in fact identified an alternative: 
a possibility is to use XML Schema facets to capture the assert expression 
by a restriction to the data type.
      However that approach does not cover the semantics currently 
available in our "custom" operators (in,inrange, et al.). So until the 
DFDL standard is updated to contain the corresponding semantics it would 
not be possible to completely replace the dmx:assertExpression with a 
standard DFDL (or in this case XML) construct.


*******






From: Steve Hanson <smh at uk.ibm.com>
Subject: Re: OGF DFDL WG Call Agenda 2016-02-16
Date: 1 March 2016 at 19:12:13 GMT+1
To: Michele Zundo <michele.zundo at esa.int>
Cc: DFDL-WG <dfdl-wg at ogf.org>, Mike Beckerle <mbeckerle at tresys.com>

Hi Michele 

Here is an example of where I do not think the relative path is correct. 
The discriminator expression should be {../Transfer_Frame_Version in [0]}. 
In infoset terms, Spacecraft_Id_V1 is a sibling of Transfer_Frame_Version. 


Also you said that you saw no need to implement DFDL assert - so what are 
the dmx:assertExpression attributes doing? 


        <xs:complexType name="TypeMasterChId"> 
                <xs:sequence> 
                        <xs:element name="Transfer_Frame_Version" 
type="xs:int" dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" 
dfdl:length="2" dmx:representation="Integer16" 
                                dmx:assertExpression
="../Transfer_Frame_Version eq 1" dmx:assertMessage="Invalid TF version 
detected." dmx:assertPropagate="true"/> 
                        <xs:choice> 
                                <xs:element name="Spacecraft_Id_V1" 
type="xs:int" dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" 
dfdl:length="10" dmx:representation="Integer32" > 
                                        <xs:annotation> 
                                                <xs:appinfo source="
http://www.ogf.org/dfdl/dfdl-1.0/"> 
                                                        
<dfdl:discriminator test="{./Transfer_Frame_Version in [0]}" /> 
                                                </xs:appinfo> 
                                        </xs:annotation> 
                                </xs:element> 
                                <xs:element name="Spacecraft_Id_V2" 
type="xs:int" dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" 
dfdl:length="8"  dmx:representation="UInteger8" 
                                        dmx:assertExpression
="../Spacecraft_Id_V2 in [82, 83, 84]" dmx:assertMessage="Invalid 
Spacecraft ID detected."> 
                                        <xs:annotation> 
                                                <xs:appinfo source="
http://www.ogf.org/dfdl/dfdl-1.0/"> 
 <dfdl:discriminator test="{true}" /> 
                                                </xs:appinfo> 
                                        </xs:annotation> 
                                </xs:element> 
                        </xs:choice> 
                </xs:sequence> 
        </xs:complexType> 



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 


--
-----------------------------------------
Michele Zundo

Head of Ground System Definition and Verification Office
EOP-PEP
European Space Agency, ESTEC
e-mail: michele.zundo at esa.int








This message and any attachments are intended for the use of the addressee 
or addressees only.
The unauthorised disclosure, use, dissemination or copying (either in 
whole or in part) of its
content is not permitted.
If you received this message in error, please notify the sender and delete 
it from your system.
Emails can be altered and their integrity cannot be guaranteed by the 
sender.

Please consider the environment before printing this email.


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/20160303/3fa0e3ac/attachment-0001.html>


More information about the dfdl-wg mailing list