[DFDL-WG] How to specify type/subtype combos?

Tim Kimber KIMBERT at uk.ibm.com
Thu Jun 20 16:10:20 EDT 2013


Good question. I call this type of validation 'cross-field validation' 
because ( unlike XML Schema validation ) it involves the value or count of 
more than one field. It's quite common in industry messaging standards.

The general answer is as follows: DFDL is based on XML Schema, so its 
validation facilities don't include cross-field validation. However, by 
using DFDL to convert to DOM/XML you can bring your non-XML data within 
reach of whole lot of tools and technologies that were originally designed 
for XML. I'm thinking about XPath, XQuery, Schematron, RELAX-NG etc. This 
should not be viewed as a shortcoming of the DFDL language - DFDL is for 
describing the format, not the higher-level validation rules.

Having said that, I wouldn't be surprised if, with sufficient ingenuity, 
it was possible to make DFDL do what you need in this particular case. 
Let's see if any suggestions are forthcoming...

regards,

Tim Kimber, DFDL Team,
Hursley, UK
Internet:  kimbert at uk.ibm.com
Tel. 01962-816742 
Internal tel. 37246742




From:   "Garriss Jr., James P." <jgarriss at mitre.org>
To:     "dfdl-wg at ogf.org" <dfdl-wg at ogf.org>, 
Date:   20/06/2013 16:34
Subject:        [DFDL-WG] How to specify type/subtype combos?
Sent by:        dfdl-wg-bounces at ogf.org



Content types come in pairs.  So while the type can be “text” and the 
subtype can be “pdf”, the complete content type cannot be “text/pdf”.  It 
can, however, be “text/html” or “application/pdf”.
 
So in my DFDL it’s not sufficient to specify enumerated lists for types 
and subtypes (as I have done below), I must also specify which types are 
allowed to go with which subtypes.
 
How would I do that, given this complexType?  TIA!
 
    <xsd:complexType name="MimeTypeType">
        <xsd:sequence dfdl:separator="/">
            <xsd:element name="Type" dfdl:initiator="">
                <xsd:annotation>
                    <xsd:appinfo source="http://www.ogf.org/dfdl/dfdl-1.0/
">
                        <dfdl:assert test="{ dfdl:checkConstraints(.) }" 
message="The type must match one of the values on the enumerated list."/>
                    </xsd:appinfo>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern
                            value=
"([a|A][p|P][p|P][l|L][i|I][c|C][a|A][t|T][i|I][o|O][n|N])|
 ([m|M][u|U][l|L][t|T][i|I][p|P][a|A][r|R][t|T])|
                            ([m|M][e|E][s|S][s|S][a|A][g|G][e|E])|
                            ([t|T][e|E][x|X][t|T])"
                        />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="Subtype" dfdl:terminator="">
                <xsd:annotation>
                    <xsd:appinfo source="http://www.ogf.org/dfdl/dfdl-1.0/
">
                        <dfdl:assert test="{ dfdl:checkConstraints(.) }" 
message="The subtype must match one of the values on the enumerated list."
/>
                    </xsd:appinfo>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern
                            value="([p|P][d|D][f|F])|
 ([a|A][l|L][t|T][e|E][r|R][n|N][a|A][t|T][i|I][v|V][e|E])|
                            ([m|M][i|I][x|X][e|E][d|D])|
                            ([r|R][f|F][c|C]822)|
                            ([p|P][l|L][a|A][i|I][n|N])|
                            ([h|H][t|T][m|M][l|L])"
                        />
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
 
 --
  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/20130620/ff3f4e9f/attachment.html>


More information about the dfdl-wg mailing list