[DFDL-WG] discriminator examples for discussion

Stephanie Fetzer sfetzer at us.ibm.com
Thu Nov 12 06:56:09 CST 2009


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 at gmail.com>
To:
dfdl-wg at ogf.org
Date:
11/10/2009 04:33 PM
Subject:
[DFDL-WG] discriminator examples for discussion
Sent by:
dfdl-wg-bounces at 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 at ogf.org
  http://www.ogf.org/mailman/listinfo/dfdl-wg


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20091112/8c20e084/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 51245 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20091112/8c20e084/attachment-0001.gif 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: discriminator1.zip
Type: application/zip
Size: 41140 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20091112/8c20e084/attachment-0001.zip 


More information about the dfdl-wg mailing list