ࡱ> qsp` 0bjbj .f(((($$(64)4)4)4)4)***6666666$H7h9x76*****764)4)L6000*4)4)60*60004)() G(.^01,b6060(:'/(:00J(:1**0*****76760***6****\\  2007-08-10 DFDL Proposal to simplify length and occurs specification properties. Version 002 This proposal expands on a theme suggested early on by Kris Rose, and subsequently by Simon Parker. The goal is to decouple the multiple properties from eachother as much as possible and remove meaningless combinations. This first table for scalar lengths. Note that in draft v1 I forgot nullTerminated and endOfData in the Original lengthKind description, so Ive added those here so that original is more correct. All proposals below continue to use prefixLength and prefixLengthIncludesPrefix properties for the prefix style of length. PropertyValues/Description OriginallengthKindfixed, schemaFacet, xpath, prefixed, delimited, nullTerminated, endOfData, regularExpressionlengthliteral or xpath or regular expression based on lengthKindlengthUnitsbits, bytes, characters, fullUnicodeCharacters, digits We agreed to drop digits and fullUnicodeCharacters from lengthUnits. Agreed Simplification To lengthUnitslengthKindfixed, schemaFacet, xpath, prefixed, delimited, nullTerminated, endOfData, regularExpressionlengthliteral or xpath or regular expression based on lengthKindlengthUnitsbits, bytes, characters Two ideas were discussed for even further simplification: Plan A Further SimplificationlengthKindexplicit, schemaFacet, prefixed, delimited, nullTerminated, endOfDatalengthliteral or xpath or regexp by special syntaxlengthUnitsbits, bytes, characters Plan B Further SimplificationlengthInBitsliteral value or xpath expression (recognized by special syntax - braces), or special token prefixedlengthInBytesliteral value or xpath expression (recognized by special syntax - braces) or special token prefixedlengthInCharactersliteral number, xpath expression , or regexp (recognized by special syntax - tbd) or special token prefixedlengthKinddelimited, endOfData, nullTerminated, schemaFacet This second table is for vector (occurs) lengths: In draft v1, I had valueDelimited, which is not consistent with the spec. The spec has stopValue=. Where you specify the value to be used as the value delimiter or stop value. I do not mention the occursSeparator property here, but it is used when the occursKind is delimited. OriginaloccursKindfixed, xpath, delimited, stopValue, regularExpressionoccursPathliteral or xpathoccursUnitsbytes, bits, items (I think characters and fullUnicodeCharacters are also needed here but are not in doc draft 019.)stopValueLiteral or expression that gives value used to determine end.  Plan AoccursPathliteral or xpath or regularExpression by special syntax or token delimited or token stopValueoccursUnitsBits, bytes, characters, itemsstopValueLiteral or expression that gives value used to determine end.  Plan BoccursInBitsliteral value or xpath expression (recognized by special syntax - braces)occursInBytesliteral value or xpath expression (recognized by special syntax - braces)occursInCharactersliteral number, xpath expression , or regexp (recognized by special syntax)occursInItemsliteral number, xpath expression (recognized by special syntax - braces)occursKinddelimited, endOfData, stopValuestopValueLiteral or expression that gives value used to determine end when occursKind=stopValue Note: perhaps occursInBits is meaningless? I have never seen this for arrays, though lengthInBits is clearly used for bit fields. Plan C was suggested by Simon Parker. The occurs units are always items in this case. You achieve the equivalent of lengthInBytes by enclosing the array in a sequence where the sequence has lengthInBytes=. which constraints the length the array must live within. This eliminates the need for occursUnits property entirely at the expense of making people introduce this sequence. Note that if their array already has a initiator/terminator then they already need to wrap in a sequence since specifying initiator/terminator on an array element is specifying each element inside the arrays initiator and terminator. Plan Ccccursliteral or xpath occursKindDelimited or stopValue or explicit or endOfData (tbd: or schemaFacet?)stopValueLiteral or expression that gives value used to determine end when the occursKind=stopValue. Note: I considered further collapsing occursKinds enums as special tokens on the occurs property; however, this makes it impossible to express the combinations of fixed length with delimiters. E.,g., 1,2,3,4 as occurs=4, occursKind=delimited, occursSeparator=, U_`@ f    / Y Z [   ! " 9 ҾxttxxhhCJOJQJ^JaJhYh}ThfCJOJQJ^JaJh}TCJaJh}TCJOJQJ^JaJh;Eh\^CJaJ&h\^56CJOJQJ\]^JaJh\^CJOJQJ^JaJh)*h;Uh.fhiMhwOhoVh\^h N* TUab@ A f g  $$Ifa$gd; $Ifgd;gdiM  {rr $Ifgd(y $$Ifa$gd(yvkd$$IflFcN %, E0*6    44 lap    Z ~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lapZ [ \ h ~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lap  t yyypp $Ifgd(y $$Ifa$gd(ywkd$$Ifl4FcN %, E0*6    44 lap t u v } ~~~ $Ifgd(ywkdx$$Ifl4FcN %, E0*6    44 lap ~~~ $Ifgd(ywkd]$$Ifl4FcN %, E0*6    44 lap   " 9 D yypp $Ifgd(y $$Ifa$gd(ywkdB$$Ifl4FcN %, E0*6    44 lap {rr $Ifgd(y $$Ifa$gd}Twkd'$$Ifl4FcN %, E0*6    44 lap {rr $Ifgd(y $$Ifa$gd}Twkd$$Ifl4FcN %, E0*6    44 lap {yypp $Ifgd; $$Ifa$gd;wkd$$Ifl4FcN %, E0*6    44 lap ]z{|WstuOPmn;<=C)*,~~v~v~vh|bCJaJh|bCJOJQJ^JaJhnCJOJQJ^JaJh2ACJaJh2ACJOJQJ^JaJhChCh\^h.fh\^CJaJhu^|CJOJQJ^JaJh\^CJOJQJ^JaJhCJOJQJ^JaJhpCJOJQJ^JaJ+{|}~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lapt~~~ $Ifgd;wkd $$Ifl4FcN %, E0*6    44 laptuv~~~ $Ifgd;wkd $$Ifl4FcN %, E0*6    44 lapOypp $Ifgd; $$Ifa$gd;wkd $$Ifl4FcN %, E0*6    44 lap OPQ\m~~~ $Ifgd;wkdj $$Ifl4FcN %, E0*6    44 lapmno{~~~ $Ifgd;wkd] $$Ifl4FcN %, E0*6    44 lap;~~~ $Ifgd;wkdB$$Ifl4FcN %, E0*6    44 lap;<=DOypp $Ifgd(y $$Ifa$gdnwkd$$Ifl4FcN %, E0*6    44 lap~~~ $Ifgd(ywkd$$Ifl4FcN %, E0*6    44 lap)~~~ $Ifgd(ywkd$$Ifl4FcN %, E0*6    44 lap)*+,3@ypp $Ifgd; $$Ifa$gd;wkd$$Ifl4FcN %, E0*6    44 lap,2%CEFu3456$%&,-.DEFGHzzzrdhoVCJOJQJ^JaJhFCJaJhFCJOJQJ^JaJhcc"CJOJQJ^JaJhFh hqhh\^h|bCJaJh'HCJOJQJ^JaJh|bCJOJQJ^JaJh CJOJQJ^JaJh\^CJaJh\^CJOJQJ^JaJh)TCJOJQJ^JaJ'~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lapE~~~ $Ifgd;wkdh$$Ifl4FcN %, E0*6    44 lapEFGU~~~ $Ifgd;wkdM$$Ifl4FcN %, E0*6    44 lap~r $$Ifa$gd; $Ifgd;wkd2$$Ifl4FcN %, E0*6    44 lap $Ifgd;_kd$$Ifl40c%,$0*644 lap4~uu $Ifgd(y $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lap456%&-4Fypp $Ifgd(y $$Ifa$gdcc"wkd$$Ifl4FcN %, E0*6    44 lap FGHS{rr $Ifgd(y $$Ifa$gdcc"wkd$$Ifl4FcN %, E0*6    44 lapHRSvhwOhFhFCJaJhFCJOJQJ^JaJhoVCJaJhyCJOJQJ^JaJhoVCJOJQJ^JaJh7CJOJQJ^JaJ ~~~ $Ifgd(ywkd$$Ifl4FcN %, E0*6    44 lapgdFwkd~$$Ifl4FcN %, E0*6    44 lap,1h/ =!"#$% $$If!vh5,5 5E#v,#v #vE:V l0*6,5,5 5E/ /  / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/  / / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/  / / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5$#v,#v$:V l40*6+,,5,5$/ / / / / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap@@@ NormalCJ_HaJmH sH tH DAD Default Paragraph FontRi@R  Table Normal4 l4a (k(No Listf TUab@Afg Z[\h tuv}"9D{|}tuv    O P Q \ m n o { ; < = D O ) * + , 3 @ E F G U 4 5 6 %&-4FGHS0000000000000000000 0 0 0 00 0 0 0 `0 @0 @0 @0 `0 @0 @0 @0 000000 0 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 `0 @0 @0 @0 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 `0 @0 @0 @0 `0 @0 @0 @0 0 0 0 0 `0 @0 @0 `0 @0 @0 @0 0 0 0 0 0000000 0 0 0 0 0 0 0 0 0 0 0 0000Z[\h tv}9D{|}tuv  O P Q \ m n o { ; < D O ) * 3 @ E F G U 4 5 -4FG{0y0y0y0{0y0{0y0y0{0{0y0y0y0y0y0{0y0{0{0{0{0y0y0y0{0y0{0{0{0y0y0{0{0y0y0{0{0@0 {0 y0 y0 y0y0y0y0y0{0y0y0y0{0y0{0y0{0({0({0(y0*y0*{0*{0*y0,y0,{0,{0,y0  L y0  Lp@07 {0*{0*{0*{0,y0,{0,{0,y0Q- y0Q- {0R+ {0  @0, E {02y02y02y0y04y04y04y0y06y06{06y0{0:y0:y0:y0y0<y0<y0y0>y0>{0>y0y0n y0R+ {0  y0@{0*{0*{0*{0,{0Q- y0R+ {0  @  0 ,H'0  Z t {tOm;)E4F !"#$%&()*+,-./128@0(  B S  ?-9>X*/OY\g  )+0GUW`bs9CNYq%*},2SVv AJ  % 2 ; = N Q [ g l o z D N Z _ c t 3 ? Q V   % G T e j  3 D P /<y-3?DHR`iy,89> Ae{ ^_T^3333333 Ub\hv}D}v  Q m o { = O , @ G U &4HS 3 $L3fKQ,q,+J6}T|bFTiqiM;Ucc")*2A;E'H N)ToVY\^(yu^|; nd& py$- @o7fwO.fCRDCVu]$Z[\h tuv}9D{|}tuv   O P Q \ m n o { ; < = D O ) * , 3 @ E F G U 4 5 &-4FGHS@3 3 興3 3 @{P@UnknownGz Times New Roman5Symbol3& z Arial"qhV{f끸1_  _ !242HP)? N2 Michael J. BeckerleMichael J. BeckerleOh+'0   @ L Xdlt| Michael J. Beckerle Normal.dotMichael J. Beckerle5Microsoft Office Word@f`@l`@z_՜.+,0 hp|  IBM    Title  !"#$%&'()*+,-./012356789:;<=>?@ACDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefgijklmnorRoot Entry FZtData 4U1TableB(:WordDocument.fSummaryInformation(`DocumentSummaryInformation8hCompObjq  FMicrosoft Office Word Document MSWordDocWord.Document.89q