Action Item for   Vx+2 :      - assertions/discriminators and choice (Suman)

Attached is an example of how discriminators can be used in DFDL to identify a particular branch within choice..

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.example.org/choiceDiscriminators"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dfdl="http://dataformat.org/"
        xmlns:tns="http://www.example.org/choiceDiscriminators">

        <xsd:element name="multiRecord" type="tns:MultiRecordType"></xsd:element>

        <xsd:complexType name="MultiRecordType">
                <xsd:sequence>
                        <xsd:element name="recordType" type="xsd:string"></xsd:element>
                        <!--
                                recordType precedes model group choice and its value determines
                                which branch of the choice is present. This is like a switch statement
                                of C or Java programming language.
                        -->

                        <xsd:choice>
                                <xsd:sequence>
                                        <xsd:annotation>
                                                <xsd:appinfo source="http://dataformat.org/">
                                                        <!--
                                                                discriminator annotation on the model group sequence describes
                                                                the condition value to be checked for the recordType. The condition
                                                                could be a complex XPATH expression using XPATH functions to check for
                                                                particular pattern of data for the condition (e.g. recordType
                                                                value starting with xyz etc).
                                                        -->
                                                        <dfdl:discriminator test="..\recordType='name'" />
                                                        <!--  identifies name record -->

                                                </xsd:appinfo>
                                        </xsd:annotation>

                                        <xsd:element name="firstName" type="xsd:string" />
                                        <xsd:element name="lastName" type="xsd:string" />
                                </xsd:sequence>

                                <xsd:sequence>
                                        <xsd:annotation>
                                                <xsd:appinfo source="http://dataformat.org/">
                                                        <dfdl:discriminator test="..\recordType='addr'" />
                                                        <!--  identifies address record -->
                                                </xsd:appinfo>
                                        </xsd:annotation>

                                        <xsd:element name="streetAddr" type="xsd:string" />
                                        <xsd:element name="city" type="xsd:string" />
                                        <xsd:element name="state" type="xsd:string" />
                                        <xsd:element name="zip" type="xsd:string" />
                                </xsd:sequence>


                                <xsd:element name="otherElem" type="xsd:string">
                                        <xsd:annotation>
                                                <xsd:appinfo source="http://dataformat.org/">
                                                        <dfdl:discriminator test="..\recordType='oth" />
                                                        <!--  identifies other record -->
                                                </xsd:appinfo>
                                        </xsd:annotation>
                                </xsd:element>

                        </xsd:choice>

                </xsd:sequence>

        </xsd:complexType>

</xsd:schema>

Suman Kalia
IBM Toronto Lab
WebSphere Business Integration Application Connectivity Tools
Tel : 905-413-3923  T/L  969-3923
Fax : 905-413-4850 T/L  969-4850
Internet ID : kalia@ca.ibm.com

----- Forwarded by Suman Kalia/Toronto/IBM on 02/12/2008 06:59 PM -----
"Mike Beckerle" <mbeckerle.dfdl@gmail.com>
Sent by: dfdl-wg-bounces@ogf.org

02/12/2008 06:24 PM

To
<dfdl-wg@ogf.org>
cc
Subject
[DFDL-WG] Agenda for call 2007-02-13





 
Topics for this call include –
 
·         Content for OGF22 Meeting. – I need to know what features of our progress we want to highlight. The section about status and progress is where this content goes. Slides 37 through 51 of the OGF21 deck, which is here: http://forge.ogf.org/sf/go/doc15029?nav=1
 
·         Comments on Draft 031
 
·         Review of next tasks
 
Old task list below for reference:
 
Planned (Roughly)

vX+1

- 2-level description (schema components)
- including UML (Simon)
- regular expressions for lengths
(Alan)
- valueCalc
(Mike)
- property precedence
(Steve)
- entities
(Alan)
- white space handling
(Steve)
 
vX+2

- bring supplements up-to-date
(Steve)
- assertions/discriminators and choice
(Suman)
- how speculative parsing works
(combining choice and variable-occurrence - currently these are separate) (TX person)
- reordering the properties discussion (move representation earlier, improve flow of topics)
(Alan)

vX+3

- escapeSchemes
(Ian P)
- string xml type
(Ian P)
- variables
(Mike)
- selectors
(Suman)
- improvements on property descriptions
(All - split tbd)
- envelopes and payloads
(Steve)

Extraneous to spec
 
- develop Schema for DFDL xsd
(Suman)
- develop Schema for Schema DFDL Subset xsd
(Suman)
--
 dfdl-wg mailing list
 dfdl-wg@ogf.org
 http://www.ogf.org/mailman/listinfo/dfdl-wg