All:
Following our conversation yesterday I created a model in WTX which does
what I believe we were trying to do here. The first set of testdata
is good (and hence not much fun!). The second set of testdata is
bad but is 'directed' through the choices appropriately with the discriminators.
Hope this helps explain how these look
in WTX.
Here is Mike’s discriminator1
case in WTX,
Trying to keep it as simple as
possible but here is the tree for the easiest modeling:
The two ‘identifiers are circled
in RED.
With good data – this is what
the trace looks like: (notes are in RED
as well)
C1(a 10)(q 20)
X5(b 62 JQ6)(b 47 H)
#################
____________________________________________________
(Level 4: Offset 0, len 2, comp
1 of 2, #1, DI 00000001:)
Data at offset 0 ('C1') was found
to be of TYPE
X'0006' (PrefixCode
SAF).
(Level 5: Offset 3, len 1, comp
1 of 2, #1, DI 00000002:)
Data at offset 3 ('a') was found
to be of TYPE
X'0008' (label SAF).
(Level 5: Offset 3, len 1, comp
1 of 2, #1, DI 00000003:)
Type X'0007' (a
SAF) is known to exist.
(Level 5: Offset 5, len 2, comp
2 of 2, #1, DI 00000003:)
Data at offset 5 ('10') was found
to be of TYPE
X'0009' (value SAF).
(Level 4: Offset 3, len 4, comp
2 of 2, #1, DI 00000004:)
Data at offset 3 ('a 10') was found
to be of TYPE
X'0007' (a SAF).
(Level 4: Offset 3, len 4, comp
2 of 2, #1, DI 00000005:)
Type X'0005' (L
SAF) is known to exist.
(Level 5: Offset 9, len 1, comp
1 of 2, #1, DI 00000005:)
Data at offset 9 ('q') was found
to be of TYPE
X'0008' (label SAF).
(Level 5: Offset 9, len 1, comp
1 of 2, #1, DI 00000006:)
Type X'0007' (a SAF) is known to
exist.
(Level 5: Offset 11, len 2, comp
2 of 2, #1, DI 00000006:)
Data at offset 11 ('20') was found
to be of TYPE
X'0009' (value SAF).
(Level 4: Offset 9, len 4, comp
2 of 2, #2, DI 00000007:)
Data at offset 9 ('q 20') was found
to be of TYPE
X'0007' (a SAF).
(Level 4: Offset 9, len 4, comp
2 of 2, #2, DI 00000008:)
Type X'0005' (L SAF) is known to
exist.
(Level 4: Offset 14, len 0, comp
2 of 2, #3, DI 00000008:)
Data at offset 14 ('<CR><LF>X5(b
62 JQ6)(b...') does not match INITIATOR '('
of TYPE X'0007' (a SAF).
(Level 4: Offset 14, len 0, comp
2 of 2, #3, DI 00000008:)
COMPONENT number 2 of TYPE X'0005'
(L SAF):
occurrence 3 is optional and does
not exist.
(Level 3: Offset 0, len 14, comp
1 of 3, #1, DI 00000008:)
Data at offset 0 ('C1(a 10)(q 20)')
was found to be of TYPE
X'0005' (L SAF).
(Level 2: Offset 0, len 14, comp
1 of 2, #1, DI 00000008:)
Data at offset 0 ('C1(a 10)(q 20)')
was found to be of TYPE
X'0004' (record SAF).
(Level 1: Offset 0, len 16, comp
1 of 1, #1, DI 00000008:)
Data at offset 0 ('C1(a 10)(q 20)<CR><LF>')
was found to be of TYPE
X'0003' (top SAF).
(Level 4: Offset 16, len 2, comp
1 of 2, #1, DI 00000008:)
Data at offset 16 ('X5') was found
to be of TYPE
X'0006' (PrefixCode
SAF).
(Level 5: Offset 19, len 1, comp
1 of 2, #1, DI 00000009:)
Data at offset 19 ('b') was found
to be of TYPE
X'0008' (label SAF).
(Level 5: Offset 19, len 1, comp
1 of 2, #1, DI 0000000A:)
Data at offset 19 ('b') failed
COMPONENT RULE test
for component number
1, TYPE X'0007' (a SAF).
(Level 4: Offset 18, len 0, comp
2 of 2, #1, DI 00000009:)
Data at offset 18 ('(b 62 JQ6)(b
47 ') failed COMPONENT RULE test
for component number
2, TYPE X'0005' (L SAF).
(Level 4: Offset 16, len 2, comp
1 of 2, #1, DI 00000008:)
Data at offset 16 ('X5') was found
to be of TYPE
X'0006' (PrefixCode
SAF).
(Level 5: Offset 19, len 1, comp
1 of 2, #1, DI 00000009:)
Data at offset 19 ('b') was found
to be of TYPE
X'0008' (label SAF).
(Level 5: Offset 21, len 2, comp
2 of 2, #1, DI 0000000A:)
Data at offset 21 ('62') was found
to be of TYPE
X'0009' (value SAF).
(Level 5: Offset 24, len 3, comp
2 of 2, #2, DI 0000000B:)
Data at offset 24 ('JQ6') was found
to be of TYPE
X'0009' (value SAF).
(Level 4: Offset 19, len 8, comp
2 of 2, #1, DI 0000000C:)
Data at offset 19 ('b 62 JQ6')
was found to be of TYPE
X'000B' (b SAF).
(Level 5: Offset 29, len 1, comp
1 of 2, #1, DI 0000000C:)
Data at offset 29 ('b') was found
to be of TYPE
X'0008' (label SAF).
(Level 5: Offset 31, len 2, comp
2 of 2, #1, DI 0000000D:)
Data at offset 31 ('47') was found
to be of TYPE
X'0009' (value SAF).
(Level 5: Offset 34, len 1, comp
2 of 2, #2, DI 0000000E:)
Data at offset 34 ('H') was found
to be of TYPE
X'0009' (value SAF).
(Level 4: Offset 29, len 6, comp
2 of 2, #2, DI 0000000F:)
Data at offset 29 ('b 47 H') was
found to be of TYPE
X'000B' (b SAF).
(Level 4: Offset 36, len 0, comp
2 of 2, #3, DI 0000000F:)
Data at offset 36 ('<CR><LF>##############...')
does not match INITIATOR '('
of TYPE X'000B' (b SAF).
(Level 4: Offset 36, len 0, comp
2 of 2, #3, DI 0000000F:)
COMPONENT number 2 of TYPE X'000A'
(S SAF):
occurrence 3 is optional and does
not exist.
(Level 3: Offset 16, len 20, comp
2 of 3, #1, DI 0000000F:)
Data at offset 16 ('X5(b 62 JQ6)(b
4...') was found to be of TYPE
X'000A' (S SAF).
(Level 2: Offset 16, len 20, comp
1 of 2, #1, DI 0000000F:)
Data at offset 16 ('X5(b 62 JQ6)(b
4...') was found to be of TYPE
X'0004' (record SAF).
(Level 1: Offset 16, len 22, comp
1 of 1, #2, DI 0000000F:)
Data at offset 16 ('X5(b 62 JQ6)(b
4...') was found to be of TYPE
X'0003' (top SAF).
(Level 4: Offset 38, len 2, comp
1 of 2, #1, DI 0000000F:)
Data at offset 38 ('##') was found
to be of TYPE
X'0006' (PrefixCode
SAF).
(Level 4: Offset 40, len 0, comp
2 of 2, #1, DI 00000010:)
Data at offset 40 ('###############<CR>...')
does not match INITIATOR '('
of TYPE X'0007' (a SAF).
(Level 4: Offset 40, len 0, comp
2 of 2, #1, DI 00000010:)
Data at offset 40 ('###############<CR>')
failed COMPONENT RULE test
for component number
2, TYPE X'0005' (L SAF).
(Level 4: Offset 38, len 2, comp
1 of 2, #1, DI 0000000F:)
Data at offset 38 ('##') was found
to be of TYPE
X'0006' (PrefixCode
SAF).
(Level 4: Offset 38, len 2, comp
1 of 2, #1, DI 00000010:)
Data at offset 38 ('##') failed
COMPONENT RULE test
for component number
1, TYPE X'000A' (S SAF).
(Level 4: Offset 40, len 0, comp
2 of 2, #1, DI 00000010:)
Data at offset 40 ('###############<CR>...')
does not match INITIATOR '('
of TYPE X'000B' (b SAF).
(Level 4: Offset 40, len 0, comp
2 of 2, #1, DI 00000010:)
COMPONENT number 2 of TYPE X'000A'
(S SAF):
occurrence 1 is optional and does
not exist.
(Level 3: Offset 38, len 17, comp
3 of 3, #1, DI 0000000F:)
Data at offset 38 ('################...')
was found to be of
TYPE
X'000C'
(unknownType SAF).
(Level 2: Offset 38, len 17, comp
1 of 2, #1, DI 0000000F:)
Data at offset 38 ('################...')
was found to be of TYPE
X'0004' (record SAF).
(Level 1: Offset 38, len 19, comp
1 of 1, #3, DI 0000000F:)
Data at offset 38 ('################...')
was found to be of TYPE
X'0003' (top SAF).
(Level 0: Offset 0, len 57, comp
1 of 0, #1, DI 0000000F:)
Data at offset 0 ('C1(a 10)(q 20)<CR><LF>...')
was found to be of TYPE
X'0002' (file SAF).
INPUT 1 was valid.
End of Validation
messages for INPUT CARD 1.
End of Execution messages..
Now the bad data – let’s see
how that flows. In this case we want to discriminate that the data is an
a and therefore an L Record (without looking at b’s or S Records). But
as we have an invalid L record at the Top choice we want to go to blob
as we have no discrimination at that level.
C1(a 10)(q -20)
_______________________________
(Level 3: Offset 0, len 2, comp
1 of 2, #1, DI 00000001:)
Data at offset 0 ('C1') was found
to be of TYPE
X'0005' (PrefixCode
SAF).
(Level 4: Offset 3, len 1, comp
1 of 2, #1, DI 00000001:)
Data at offset 3 ('a') was found
to be of TYPE
X'0007' (label SAF).
(Level 4: Offset 3, len 1, comp
1 of 2, #1, DI 00000002:)
Type X'0006' (a SAF) is known to
exist.
(Level 4: Offset 5, len 2, comp
2 of 2, #1, DI 00000002:)
Data at offset 5 ('10') was found
to be of TYPE
X'0008' (value SAF).
(Level 3: Offset 3, len 4, comp
2 of 2, #1, DI 00000003:)
Data at offset 3 ('a 10') was found
to be of TYPE
X'0006' (a SAF).
(Level 3: Offset 3, len 4, comp
2 of 2, #1, DI 00000004:)
Type X'0004' (L SAF) is known to
exist.
(Level 4: Offset 9, len 1, comp
1 of 2, #1, DI 00000004:)
Data at offset 9 ('q') was found
to be of TYPE
X'0007' (label SAF).
(Level 4: Offset 9, len 1, comp
1 of 2, #1, DI 00000005:)
Type X'0006' (a SAF) is known to
exist.
(Level 4: Offset 11, len 3, comp
2 of 2, #1, DI 00000005:)
Data at offset 11 ('-20') was found
to be of TYPE
X'0008' (value SAF).
(Level 4: Offset 11, len 3, comp
2 of 2, #1, DI 00000006:)
Data at offset 11 ('-20') failed
COMPONENT RULE test
for component number
2, TYPE X'0006' (a SAF).
(Level 4: Offset 10, len 0, comp
2 of 2, #1, DI 00000005:)
Data at offset 10 (' -20)<CR><LF>')
was found to be of TYPE
X'0008' (value SAF).
(Level 3: Offset 10, len 0, comp
2 of 2, #2, DI 00000005:)
Data at offset 10 (' -20)<CR><LF>...')
does not match TERMINATOR ')'
of TYPE X'0006' (a SAF).
(Level 3: Offset 9, len 1, comp
2 of 2, #2, DI 00000005:)
Data at offset 9 ('q') is INVALID
data of TYPE
X'0006' (a SAF).
(Level 3: Offset 9, len 1, comp
2 of 2, #2, DI 00000006:)
Data at offset 9 ('q') failed COMPONENT
RULE test
for component number
2, TYPE X'0004' (L SAF).
(Level 3: Offset 8, len 0, comp
2 of 2, #2, DI 00000004:)
COMPONENT number 2 of TYPE X'0004'
(L SAF):
occurrence 2 is optional and does
not exist.
(Level 2: Offset 0, len 8, comp
1 of 3, #1, DI 00000004:)
Data at offset 0 ('C1(a 10)') was
found to be of TYPE
X'0004' (L SAF).
(Level 1: Offset 8, len 0, comp
1 of 2, #1, DI 00000004:)
Data at offset 8 ('(q -20)<CR><LF>...')
does not match TERMINATOR '<CR><LF>'
of TYPE X'0003' (record
SAF).
(Level 1: Offset 0, len 15, comp
2 of 2, #1, DI 00000001:)
Data at offset 0 ('C1(a 10)(q -20)')
was found to be of TYPE
X'000C' (blob SAF).
(Level 0: Offset 0, len 17, comp
1 of 0, #1, DI 00000001:)
Data at offset 0 ('C1(a 10)(q -20)<CR>...')
was found to be of TYPE
X'0002' (top SAF).
INPUT 1 was valid.
End of Validation
messages for INPUT CARD 1.
End of Execution messages.
Cheers,
-Steph
Artifacts attached:
WebSphere Transformation Extender
Industry Packs - Software Engineer
From:
| Mike Beckerle <mbeckerle.dfdl@gmail.com>
|
To:
| dfdl-wg@ogf.org
|
Date:
| 11/10/2009 04:33 PM
|
Subject:
| [DFDL-WG] discriminator examples for
discussion
|
Sent by:
| dfdl-wg-bounces@ogf.org |
Attached are two files. One is a DFDL schema that uses
discriminators. The other is a test case file.
I'd like to review the issues with discriminators on our
call tomorrow by walking through these examples.
To do this we will absolutely have to have screen sharing
going on so I can point at things.
So I have setup a "gotomeeting" which is a low
impact web screen sharing thingy.
If you've not used gotomeeting before, there is a brief
download required, so you might want to get this out of the way before
our call.
https://www2.gotomeeting.com/join/319038563
Meeting ID: 319-038-563
[attachment "testDiscriminator1.xml" deleted
by Stephanie Fetzer/Charlotte/IBM] [attachment "testDiscriminator1.dfdl.xml"
deleted by Stephanie Fetzer/Charlotte/IBM] --
dfdl-wg mailing list
dfdl-wg@ogf.org
http://www.ogf.org/mailman/listinfo/dfdl-wg