ࡱ>  @ 0Hbjbj "؝؝ X;;;;<tNu>>>>>>.?3? sssssss$TwRyht"@>>"@"@t>>uzUzUzU"@> >>szU"@szUzUgl> > {VKL;`K2ok1ou0NukzPz,llvz}l??"a?zUy????????ttd9;pU ; DFDL F2F Meeting Hursley UK 2008-05-19 NumberDescResolvedSpec updated112.2. Encoding and byteOrder properties for markup propertiesYesyes212.2. Location of dfdl:generatedNewLine property. Should this be in dfdl:defineFormat only? Yesyes312.3.1. Tables seem to complicate something that in essence is a simple problem. No412.3.1.1. How can fixed 1 byte have a textCharacterSize of 2?No512.3.1.1. Can't find any reference to UTF16-VL.Yesyes613.1. dfdl:textTrimKind. Now that we have WSP and OWSP entities, the whitespace enums appear to be unnecessary. The only thing they give above padChar enum is ability to trim from both ends, but this could be achieved using a dfdl:justification enum of 'center'.Yesyes713.1. Application of dfdl:textPadCharacter to variable length fields. Specifically the ability to pad on output to a minimum length.No813.3. Is a zoned decimal textual or non-textual? If all overpunched variants result in well-known characters then the data is scannable and therefore more like a textual field.Yesno913.3.1. Special value for zero seen eg 'zero'.No1013.3.1. dfdl:numberBase - should this be an enum restricted to 8, 10, 16.Yesyes1113.5. Do we really need onesComplement and signMagnitude.YesYes1213.7. Should base64Binary be dropped. It's still causing confusion.Yesyes1314. Ability to specify min max length on sequence. Also valid lengthKinds - looks to be block copied. Do we need regular expressions - yes, for MRM migration - or can we convert?Yesyes14lengthUnits = characters - is there a restriction that encoding must be fixed width encodingYesyes15Empty sequence - do we allow? What's the use case?Yesyes1614.2. Where did prefix and postfix separators go?Yesyes1714.2. Do we need finalTerminatorCanBeMissing? Does it mean final delimiter?No1814.2. separatorIgnoreCase needed - it's in type tree.Yesyes1914.2. separatorPolicy - suppressAtEnd only when safe to do so (ie, when there is no clash with enclosing markup)Yesyes2014.2.2. unordered sequence does not necessarily need initiator, speculative parsing can work it out too.No2114.2.3. Scannability of field where length is specified but no delimiters - will ignore parent delimiters - is this a good idea for text fields?Yesno2214.2.5. But warning must be given if excess data foundNo2314.2.5. Last paragraph. Difficult to follow. Also 'End-of-data' semantic - is this enum misleading?yesyes24Unresolvable choices - what does this look like in the infoset?Yesyes2516. Fixed length versus variable length - can we handle this now via dfdl:length on the choice itself ?No2617. Arrays - simplify - drop occursStopValueKind (always logical); drop occursSeparator (use sequence and separator)Yesyes IBM WebSphere Transformation Extender (TX) Group Reviewed Draft DFDL Spec. They produced this list of issues which is discussed here. 12.2. Encoding and byteOrder properties for markup properties. These used to be in the spec but were removed. WTX cite the SAP BAPI format as having initiators in a different encoding to the data. Variable Markup mechanism fixes this. That is, we specify the initiator as a type which enables us to vary the encoding/byte order. (Equiv in TX is using a variable as the initiator instead of a literal). (alternative 'delimiterEncoding' delimiterByteOrder' properties but the conservativechoice is NOT to put in the property names. ) [MJH Its true this will work but it seems like a very hard way to solve an easy problem.] SMH: Will stick with use of variable markup as this is a rare case. Resolved, no updated needed 12.2. Location of dfdl:generatedNewLine property. Should this be in dfdl:defineFormat only? There are no other examples of properties used only in defineFormat context. Usage is typically that this is set once in a defined format, but many properties work that way (encoding, byteOrder, etc.) [MJH Our issue was not the placement of this property, but the fact that it exists at all. Why should newline be any different than any other character ? Does this serve any purpose ? What is the use case for this ?] SMH: Use case is for when you are tolerant of any new line characters on input but want to put out a specific newline character not dependent on the platform where the dfdl xsd is being used. Resolved, update needed (Done) Need to keep. Change to outputNewLine 12.3.1. Tables seem to complicate something that in essence is a simple problem. Combine textCharacterSize and textDBCSOnly - call it textCharacterWidth = 1 or 2. tbd. proposed can we drop textCharacterWidth even and depend on CCSIDs only??? This may well be possible MQ for example only ever allows you to provide CCSID. Use appropriate CCSID (Coded Charater Set Identifier) for all single, all double, or mixed width But need to consider point 4 below. SMH: Should be able to drop this. Not Resolved 12.3.1.1. How can fixed 1 byte have a textCharacterSize of 2? Answer: Wide characters in C. [MJH Wide characters are only 1 byte if they contain 8 bits. Wide characters which contain 16 bits are 2 bytes. 32 bits are 4 bytes. One byte can NEVER have a character size of anything more than 1.] SMH: Answer above is not correct. Not Resolved 12.3.1.1. Can't find any reference to UTF16-VL. Drop UTF-16VL proposal. (Similarly, UTF-8 variant (Java modified UTF-8) is not DFDL issue.) Resolved: update needed (done) 13.1. dfdl:textTrimKind. Now that we have WSP and OWSP entities, the whitespace enums appear to be unnecessary. The only thing they give above padChar enum is ability to trim from both ends, but this could be achieved using a dfdl:justification enum of 'center'. Use Case: padChar=0 data looks like 00012345600 of fixed length 16 on Input. On Output we want 0000000012345600 On parse we want to trim whitespace, but not padChars, The number value is 12345600. Idea 1: Doesnt work because we want to pad with zeros on output. Idea 2: Works. Idea 3: Change numberCheckPolicy all WSP is a zero, leading and trailing WSP is ignored. Simplify textTrimKind=none or padChar only. Where these are trimmed is guided by textStringJustification. Add textStringJustification=center as an option. Pad chars are added both left and right, with extra pad char on left if needed. Works. [MJH Need to talk about this one.] Next Step: Talk with TX guys (Steve H.) SMH: I think we concluded that property can be dropped? To be discussed with WG. Resolved. Idea 3 to be documented (done) 7. 13.1. Application of dfdl:textPadCharacter to variable length fields. Specifically the ability to pad on output to a minimum length. Padding should always be inserted in variable length strings to meet xs:length or xs:minLength facet requirements. [MJH So padding to xs:length is like our padding to fixed content. Padding to xs:minLength is like out pad to min content. And of course padding can be off. Right ? How do you say that less to minLength is invalid ?] Use numberPattern string to achieve richer number format behaviors. Clarify numberPattern also disallow ICU prefix and suffix. ( ???? [MJH What about CountTowardsMinContent, and AcceptAllPads ?] SMH: TX team to propose solution to pad to min content, and any other missing TX capability. Action raised. Not Resolved 13.3. Is a zoned decimal textual or non-textual? If all overpunched variants result in well-known characters then the data is scannable and therefore more like a textual field. Resolved: zoned decimal is textual. Issue: overpunch controls  how do they interact with numberPattern strings. [MJH  the sign is always trailing. No issue here. Right ?.] SMH: I ll look at the 390 PoP. numberPattern= 000V00+;000V00- decimalFormat= zoned implies the trailing signs shown in the pattern are overpunched. (zoned always implies overpunched signs) to achieve separate sign, use decimalFormat= text with the above pattern. Resolved. Update decimal supp. Merge back into main spec 13.3.1. Special value for zero seen eg 'zero'. Add property of numberFormat which is named numberZeroRep which contains the string to be interpreted as equivalent to zero. On output zero is output as this string. When parsing, this string, or a zero representation matching the numberPattern are equivalent. [MJH this is like WTX with requiredOnInput=false. What about requiredOnInput=true ? In that case ONLY the special value can mean zero (0 would be invalid)] SMH: Extra property needed. To be discussed with WG. Not Resolved. 13.3.1. dfdl:numberBase - should this be an enum restricted to 8, 10, 16. Resolved: 2, 8, 10, 16 are allowed values. Resolved. Update needed (Done) 13.5. Do we really need onesComplement and signMagnitude. Resolved: Conservative choice is to leave out integerFormat entirely. All binary integers are assumed to be twos-complement representation. Resolved: update (done) 13.7. Should base64Binary be dropped. It's still causing confusion. Resolved: drop base64Binary. Keep hexBinary. [MJH  Assuming hexBinary is equivalent to our TEXT/BINARY (i.e. dont look at it) then this is good] SMH: It is. Resolved: update (done) 14. Ability to specify min max length on sequence. Also valid lengthKinds - looks to be block copied. Do we need regular expressions - yes, for MRM migration - or can we convert? lengthKind=implicit means length of sequence is sum of length of contents + framing length. No min/max length on sequence. Add lengthKind=pattern and lengthKind=prefixed consistent with simple types. Note: lengthKind=pattern terminator=%CR;%LF; and lengthPattern=.*\n\r In this case the regexp matches data up to but not including the CRLF. The interior element b does not need to have a CRLF terminator, and the sequence terminator absorbs the CRLF. The above is the alternative, which is consistent with typical usage in IBM MRM parser. [MJH We cant follow this ! Lets talk] SMH: Its basically saying that we need a regular expression capability for dfdl:length on a sequence. Resolved: For sequence add lengthkind=pattern, prefixed (done) 14. lengthUnits = characters - is there a restriction that encoding must be fixed width encoding For version 1.0 of DFDL, the lengthUnits on sequence and choice can be only bits or bytes. This is the conservative choice. Resolved: update (done) 14.1.1. Empty sequence - do we allow? What's the use case? One use case is just that it lets you put a DFDL annotation in the middle of a sequence. By inserting an empty sequence containing only the DFDL annotation. [MJH This is going to be ugly, is it really necessary ? Lets talk.] Another use case is when you have choice among several outcomes, one of which is nothing. This can be implemented with a choice: 1st choice. 2nd choice. ;;; nothing at all [MJH In case 2 would be the empty property of the choice group] Another use case is code generator that is outputting DFDL from some other data description. You may know about a frame but not have a description of the contents. [MJH ???] While this latter use case is not important, it is likely easier to implement this, than rule it out. SMH: MRM allows empty sequence, DFDL will too. Resolved: update (state that empty seq is allowed) (done) 14.2. Where did prefix and postfix separators go? Put back separatorKind=prefix infix or postfix Resolved: update (done) 14.2. Do we need finalTerminatorCanBeMissing? Does it mean final delimiter? Add finalPostfixSeparatorCanBeMissing to sequence. Leave finalTerminatorCanBeMissing on sequence, choice, element. Use case is end of data found instead of a final postfix separator or terminator. Typically missing CRLF on last line of a file, but can be interior to a format also. [MJH This is just plain wrong.] SMH: Not needed. Two better alternatives: Use a terminator of OWSP for the final field Use an optional hidden field To be discussed with WG Not Resolved SMH: Discussion ensued about what is and what is not a processing error. XML Schema precedence says that spec should remain silent on what happens after a processing error, it is up to implementation to decide whether it can continue, abort, etc. Should  processing errors be termed  processing events ? To be discussed with WG Not Resolved 14.2. separatorIgnoreCase needed - it's in type tree. Foolish consistency. Add this property. Resolved: update (done) 14.2. separatorPolicy - suppressAtEnd only when safe to do so (ie, when there is no clash with enclosing markup) Good clarification. Resolved: update (done) 14.2.2. unordered sequence does not necessarily need initiator, speculative parsing can work it out too. True, but do we need this additional expressive power? This choice to require unambiguous initiators was just a conservative decision, but also was chosen in order to be able to provide a good diagnostic message to users in the most common use case which is where there are, or are supposed to be, distinct initiators. [MJH Missing Initiator is not a better diagnostic message than I couldnt work out what this is.] SMH: TX say this is needed, they have seen examples of unordered non-initiated data. To be discussed with WG Not Resolved Also, an array of choices has the additional expressive power needed to handle the more general case. Isnt this enough? [MJH No. It isnt. Imagine how much the performance will suck.] SMH: Performance will suck anyway ( SMH: From Sandy: Same as xsd 1.1 xs:all? Believed not the same, as with xs:all the order in the Infoset is the order in the data, with dfdl:unordered the order in the Infoset is the order in the model. Not Resolved: discuss infoset order for unordered seq. 14.2.3. Scannability of field where length is specified but no delimiters - will ignore parent delimiters - is this a good idea for text fields? Proposal: Binary data is incompatible with lengthKind=delimited (or nullTerminated) on an element itself. Hence, binary data is not scanned for delimiters. It is skipped. For binary data inside textual delimited context (sequence or choice), you cannot additionally use lengthKind= endOfData . (because we d have to scan for the enclosing construct s delimiters.) [MJH You cant have any lengthKind except explicit, implicit and prefixed. Delimted and nullTerminated cannot be used as well as endOfData] SMH: If the word additionally is added to the sentence above, as indicated, that clarifies things and addresses the concern. To be verified with WG Resolved: update (add 2 paras above) The spec already said under lengthKind The dfdl:representation=text or xsd:type=xsd:string is required for prefixed, nullTerminated, or delimited. Specifically, text elements are scanned for their own delimiters or those of enclosing constructs except if quoting/escaping are used or lengthKind=pattern. ? SMH: This is just saying that text elements are scanned for own terminator, parents separators/terminators, but that escaped delimiters and delimiters in active quotes are ignored, and that regular expressions consume all in their path. Additional observation: If you have both an initiator and a terminator then this bracketing suspends scanning for an enclosing sequence s delimiters. Resolved: Add para above 14.2.5. But warning must be given if excess data found It is not an error. Whether there should be a warning or not depends on the situation. Users may or may not wish to put in hidden elements to account for all data. The DFDL language does not specify this level of control. [MJH The parser should always tell us that unknown data was encountered. The application using the parser may choose to ignore, fail or warn.] SMH: To be discussed with WG Not Resolved 14.2.5. Last paragraph. Difficult to follow. Also 'End-of-data' semantic - is this enum misleading? End of container End of parent To Boundary Identifiable point External limit Fence Bracket Enclosure Parent boundary End of box Constraint Parent constraint As large as it can be All available space Everything available EndOfAvailableSpace EndLimit lengthKind=implicit implicit end last and the winner islengthKind=delimited. The concept of delimited means looking for your own terminator [MJH delimeter], an enclosing construct separator or terminator, or the end of available space for this item that is established by an enclosing construct. SMH: Original use of terminator is correct. Delimiter is the generic term. It makes sense to overload the notion of delimited to include these additional constructs for modularity reasons. Consider: The element s has no idea what context it will be used in. Above are two contexts. One there will be a , following the element s, the other there is just an enclosing constraint of 100 characters. So it is a modularity issue for s to assume there will be a separator or terminator in an enclosing construct. So we defined both the above sequences to be delimiting environments for the contained element s. So the lengthKind for s should be delimited. Resolved: update (remove lengthkind=EoD, extend desc of lengthkind = delimited) 16. Unresolvable choices - what does this look like in the infoset? New node type for unresolvable choice. Members are: parent, schema, dataValue (which is a byte array). [MJH You need to explain this please.] SMH: This is saying that for a choice marked as unresolvable, a unnamed Infoset item of type xs:hexBinary will be created to represent that portion of the data, until such time as the choice is resolved, eg, by an XPath reference that states the branch to resolve to, at which time the Infoset item will be replaced with the Infoset items for the resolved branch. Resolved: Update (infoset desc) (done) 16. Fixed length versus variable length - can we handle this now via dfdl:length on the choice itself ? Dont think so. Choice carries all properties that a sequence can carry, except separator. Choice has two additional properties: choiceResolvable Boolean choiceLengthKind=longest or variable. Ignored unless lengthKind=implicit, and choiceResolvable is true. [MJH This is hard to keep up with. Can we please see what section 16 looks like now ?] SMH: Agree. The two additional properties above dont match the spec, which has one property choiceKind. Need to discuss with WG to see which is preferred, and provide new write-up for property table in section 16. Not Resolved: 17. Arrays - simplify - drop occursStopValueKind (always logical); drop occursSeparator (use sequence and separator) Drop occursStopValueKind. Drop occursSeparator must put inside a sequence to express separator. Implies: )*O Q Y o w ( 3 a j  I V q~FOuvQZ }hh<h )VB*ph%h<h )VB*CJOJQJaJph%h"3Uh )VB*CJOJQJaJphhxgh )VB*phh$,h )VB*ph%h$,h )VB*CJOJQJaJphh )Vh"hcY;)*16?Ldd$If[$\$gdcY dd[$\$gdcYHLMO^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la^N>NNdd$If[$\$gdxgdd$If[$\$gdcYkd$$Ifl\[V t0644 la R U V ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 laV W Y ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la ^NNNNdd$If[$\$gdcYkd,$$Ifl\[V t0644 la ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la p s t ^NNNNdd$If[$\$gdcYkdB$$Ifl\[V t0644 lat u w ) - 0 ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la0 1 3 b e f ^NNNNdd$If[$\$gdcYkdX$$Ifl\[V t0644 laf g j ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la  ^NNNNdd$If[$\$gdcYkdn$$Ifl\[V t0644 la   J N R ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 laR S V  ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 larvz^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 laz{~^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la^NNNNdd$If[$\$gdcYkd%$$Ifl\[V t0644 laGJK^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 laKLO^NNNNdd$If[$\$gdcYkd; $$Ifl\[V t0644 la ^NNNNdd$If[$\$gdcYkd $$Ifl\[V t0644 la  wz{^NN>Ndd$If[$\$gd dd$If[$\$gdcYkdQ $$Ifl\[V t0644 la{|^NNNNdd$If[$\$gdcYkd $$Ifl\[V t0644 laRUV^NNNNdd$If[$\$gdcYkdg $$Ifl\[V t0644 laVWZ^NNNNdd$If[$\$gdcYkd $$Ifl\[V t0644 la ^NNNNdd$If[$\$gdcYkd} $$Ifl\[V t0644 la~^NNNNdd$If[$\$gdcYkd $$Ifl\[V t0644 la^NNNNdd$If[$\$gdcYkd $$Ifl\[V t0644 la^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la     ^NNNNdd$If[$\$gdcYkd$$Ifl\[V t0644 la ^NNNNdd$If[$\$gdcYkd4$$Ifl\[V t0644 lab01^RRRC>>gd$4i & Fdd[$\$gd$4i dd[$\$gdcYkd$$Ifl\[V t0644 lasab/15Sq{Ķ~p_N_@h:&B*OJQJ^Jph!hrh:&B*OJQJ^Jph!hrhUyiB*OJQJ^Jphh:&CJOJQJ^JaJhcYCJOJQJ^JaJh.KCJOJQJ^JaJh:ZCJOJQJ^JaJh$,CJOJQJ^JaJh$4iCJOJQJ^JaJh$,h$4iB*ph%h$,h$4iB*CJOJQJaJph hcYhcYh$,hcYB*phhcYh"h )V1Vrsuv67V| %I^gd"3U & F gd"3U & F"dd[$\$gd$4i dd[$\$gd.K & Fdd[$\$gd.Kgd$4iUVrs5Tstuv56tfXtJ<h(B*OJQJ^Jph3fhUyiB*OJQJ^JphhB*OJQJ^Jphh}4B*OJQJ^Jph!hrhUyiB*OJQJ^JphhUyih$4ih$,h.KB*phh$,h$4iB*ph%h$,h$4iB*CJOJQJaJphh~jh.B*ph3f!hTh.B*OJQJ^Jphh~jB*OJQJ^Jph3f!h~jh~jB*OJQJ^Jph3fh~jB*OJQJ^Jph67NUV{| pIJklyk]H6#h~jB*CJOJQJ^JaJph3f)h~jh~jB*CJOJQJ^JaJph3fh1yCJOJQJ^JaJh"3UCJOJQJ^JaJh$,CJOJQJ^JaJhYCJOJQJ^JaJh$4iCJOJQJ^JaJh$,h$4iB*ph%h$,h$4iB*CJOJQJaJph!h~jh.B*OJQJ^Jph3fhdB*OJQJ^Jph!hTh.B*OJQJ^Jphh.B*OJQJ^Jph3fIJlmzaab dd[$\$gdmP & Fdd[$\$gd$4igd"3U & Fdd[$\$gd$4i dd[$\$gd$, & Fdd[$\$gd$4igd.gd~j^gd"3UlmyzǴ~p_Q>3+h$4iB*phh"3Uh$4iB*ph%h"3Uh$4iB*CJOJQJaJphh~jB*OJQJ^Jph3f!h~jh~jB*OJQJ^Jph3fh&B*OJQJ^Jph!hrh&B*OJQJ^Jphh$4i h$,h$4ih$,h$4iCJOJQJaJh$,h$,B*ph%h$,h$4iB*CJOJQJaJph)hTh.B*CJOJQJ^JaJph!hTh.B*OJQJ^Jph#h.B*CJOJQJ^JaJph3faby ["b"""""""""Ű{p{kf[SESheB*OJQJ^Jph3fhBzB*ph3fh~jh~jB*ph3f h5 hyH5hDh*RVB*phhDh}%kB*phhmPhz2hh"3Uh$4iB*ph%h"3Uh$4iB*CJOJQJaJph)hTh.B*CJOJQJ^JaJphhdB*OJQJ^Jph!hTh.B*OJQJ^Jphh.CJOJQJ^JaJh"3UCJOJQJ^JaJ\d  G f!!"T"[""""###$ dd[$\$gdPX dd[$\$gd$4i dd[$\$gd dd[$\$gdz2 dd[$\$gdmP""#"###&###$$$$z%{%|%%%%%&,&-&9&:&&&(ͽvk`UMͪIhHTheB*ph3fh~jh~jB*ph3fhuhuB*phh8h8B*ph jh8h8B*phh8huB*phh*9h>UB*phhPXh"3Uh$4iB*ph%h"3Uh$4iB*CJOJQJaJphhBzB*CJOJQJaJphhTh B*phhS6B*OJQJ^Jph!hTh B*OJQJ^Jphh~jB*ph3f$$$>%%%-&:&&(()V)))*>++ ,-- dd[$\$gdM & F dd[$\$gdM dd[$\$gdHT 7$8$H$gd 5 & Fdd[$\$gd$4i dd[$\$gdPX(((((())))V)))))))))***:+<+>+ĶĶĨtiati]Yt]tG#hDB*CJOJQJ^JaJphhKhDhKmHsHh$,hDmHsH)h 5hKB*CJOJQJ^JaJph hKhK hKhD!h 6h 6B*OJQJ^Jph3fh 5B*OJQJ^JphhKB*OJQJ^Jph!h 5h 5B*OJQJ^JphhHT h 5hHTCJOJQJ^JaJ)h 5h 5B*CJOJQJ^JaJph>+++, ,5,6,@,D,-------x.|..Ź|n`MB>h *h<h$4iB*ph%h<h$4iB*CJOJQJaJphh 6B*OJQJ^Jph3fheB*OJQJ^Jph3f!h 6h 6B*OJQJ^Jph3fhjuB*OJQJ^Jph!hjuhjuB*OJQJ^JphhMCJOJQJaJo(hMCJOJQJaJh"3Uh$4iB*ph%h"3Uh$4iB*CJOJQJaJphhTh B*ph!hTh B*OJQJ^Jph---|...//000b11G2S2k23 & F dd[$\$gd$4i dd[$\$gd & F dd[$\$gd$4i & F dd[$\$gd$4i 7$8$H$gdY` dd[$\$gd * & F dd[$\$gd$4i dd[$\$gd dd[$\$gdM.../////0000000^1b11F2G2ǹznǹc_N@hY`B*OJQJ^Jph!hY`hY`B*OJQJ^Jphhh<h$4iB*phh$4iCJOJQJaJhCJOJQJaJh<h *B*ph%h<h$4iB*CJOJQJaJph)hTh B*CJOJQJ^JaJphh 9B*OJQJ^Jph!hTh B*OJQJ^Jph#hY`B*CJOJQJ^JaJph)hY`hY`B*CJOJQJ^JaJphG2R2S2c2j2k233|3}3666$7%7R7\7c7d77788Ϯxg\XC)hY`h9*2B*CJOJQJ^JaJphhDhTh B*ph!hThqB*OJQJ^JphhQB*OJQJ^Jph!hY`hQB*OJQJ^Jphh@hh2fh<h$4iB*ph%h<h$4iB*CJOJQJaJphh\B*OJQJ^Jph!hTh B*OJQJ^Jphh 6B*OJQJ^Jph3f!h 6h 6B*OJQJ^Jph3f3}333<4a444444555506<666%7d77B88 dd[$\$gdo) & Fdd[$\$gd$4i dd[$\$gd@ dd[$\$gd888296:|:: ;';A;k;z;;s<<<=N=== dd[$\$gdr & Fdd[$\$gd$4i dd[$\$gd?! dd[$\$gdH & Fdd[$\$gd$4i 7$8$H$gd9*288888.9296:<:n:z:{:|:;;5;7;z;;;;;;s<}<~<<<<==F=ι|qmememqaqaYQh 6B*ph3fheB*ph3fhHhMhMH*hMh?!h?!B*phhB*phh?!B*phh8,h?!B*phhO\h<h$4iB*ph%h<h$4iB*CJOJQJaJph)hThqB*CJOJQJ^JaJphhlAB*OJQJ^Jph!hThqB*OJQJ^Jph#h9*2B*CJOJQJ^JaJphF=M=N=====>>>>&>4>6>>>>?4?6??;@@@rdOD@@@hRqh<ho)B*ph)hThqB*CJOJQJ^JaJphh[B*OJQJ^Jph!hThqB*OJQJ^Jph#hqB*CJOJQJ^JaJph#hB*CJOJQJ^JaJph)hY`hB*CJOJQJ^JaJphhrh+vh h<h$4iB*ph%h<h$4iB*CJOJQJaJphhThqB*phhlAB*OJQJ^Jph=>>6>>6??@@@@A1A>AC.CCC dd[$\$gdo) & Fdd[$\$gd$4ihdd[$\$^hgde & F!dd[$\$gdq dd[$\$gd+v & Fdd[$\$gdo) 7$8$H$gd@@@@@@AA1A=A>ACABBCC,C.CCCCCCDòџÉvkgR@#h @>B*CJOJQJ^JaJph)hY`h @>B*CJOJQJ^JaJphha Mh<h$4iB*ph%h<h$4iB*CJOJQJaJphhl7B*OJQJ^Jph3fheB*ph3fhxB*ph3fhThqB*ph!hThqB*OJQJ^JphheB*OJQJ^Jph3fhl7B*ph3fhqB*ph3fhl7hl7B*ph3fhB*phhhB*phCC DE,E0E`EFXGG-H:HHHIIJJJ dd[$\$gdX. & Fdd[$\$gdNtr dd[$\$gdl7 & Fdd[$\$gd$4i 7$8$H$gdL dd[$\$gdT & Fdd[$\$gd$4i 7$8$H$gd @>DD DEE(E,E.E0EPE^E`EFFFFWGXGGGHHɾ~peZVKC;ChqB*ph3fhl7B*ph3fhr9hr9B*phh|h<h$4iB*phh<hTB*phhM B*OJQJ^Jph!hThqB*OJQJ^Jph#hLB*CJOJQJ^JaJph)hY`hLB*CJOJQJ^JaJphh$4ihTh<hB*ph%h<h$4iB*CJOJQJaJph)hThqB*CJOJQJ^JaJphhRK~B*OJQJ^JphH,H-H9H:HHHHHIIIDIIIIIJJJJøtctXE:h<h$4iB*ph%h<h$4iB*CJOJQJaJphhPhqB*ph3f!hThTB*OJQJ^JphhTB*OJQJ^JphhqB*ph3fhPB*ph3f jJhl7hl7B*ph3fhl7B*ph3fhr9B*phh,B*phhr9hr9B*phh|hThqB*ph!hThqB*OJQJ^Jphhl7B*OJQJ^Jph3fheB*OJQJ^Jph3fJJJLLLLLLLLLLMM.MFMHMRM|MN3N;NOZO¾쾯쾠wfXh[\B*OJQJ^Jph!hTh[\B*OJQJ^JphheB*OJQJ^Jph3fhKhKB*phh;B*phhKB*phhKhxB*phheheheB*ph3fhahR )hxhxB*CJOJQJ^JaJph)hY`hxB*CJOJQJ^JaJphh.1h [h<hT$B*ph!JKLLLNN6OOPPQQHRJRNRRRTXTT dd[$\$gdp & Fdd[$\$gd$4i 7$8$H$gdje dd[$\$gdNtr dd[$\$gds 7$8$H$gdx dd[$\$gd.1ZOOOOOOOOOPPPPQQQQHRJRLRNR񯫠|qmimeP>#hjeB*CJOJQJ^JaJph)hY`hjeB*CJOJQJ^JaJphh[\hX.h.1h theB*phh,cB*OJQJ^Jph3fheB*OJQJ^Jph3fh tB*phh th tB*phh [hs hxYB*OJQJ^Jphh65B*OJQJ^Jph!hs hs B*OJQJ^Jph!hs hs B*OJQJ^Jphhs B*OJQJ^JphNR^R~RRRRSTXTTTU UUUvUxUV+V>V?VqVVVVVVVWW˸yuquqmqmimiXTh(+- h4hJn7B*OJQJphhJnh hy&hGFh>4h[\B*phh,cB*OJQJ^Jph3fh>4B*phh>4h>4B*phhvhph<h$4iB*ph%h<h$4iB*CJOJQJaJph)hjeh[\B*CJOJQJ^JaJphh[\B*OJQJ^Jph!hTh[\B*OJQJ^JphTUUxUUUUUUUUUUUVV+V?VTVhVqVVVVWW dd[$\$gdv & Fdd[$\$gd$4i dd[$\$gdpWWWWWWa[i[[[[[@\^\_\\\]]]]]^ŷxjYHY:ŷh/vB*OJQJ^Jph3f!hEKhEKB*OJQJ^Jph3f!hEKh/vB*OJQJ^Jph3fhB*OJQJ^Jph!hhB*OJQJ^Jphh jhvNhZh<h$4iB*ph%h<h$4iB*CJOJQJaJphhvh[\B*OJQJ^Jph!hTh[\B*OJQJ^Jphh>h,ch,cB*OJQJ^Jph3fhXhJnh(+-h(+-B*phWnXXXXXYYiYYY[ZZa[[[_\\]^^^^ dd[$\$gdV & Fdd[$\$gd$4i dd[$\$gd j & Fdd[$\$gd$4i dd[$\$gdv^^^^^^___``````EaGaaaaTck¾|n]nYUYSYUYUOUOUOUh]cUhe[h!hTh[\B*OJQJ^Jphh[\B*OJQJ^JphhEKB*OJQJ^Jph3f!hEKhEKB*OJQJ^Jph3fhB*OJQJ^Jph!hhB*OJQJ^Jphh jh<h<h$4iB*ph%h<h$4iB*CJOJQJaJph!hEKh[\B*OJQJ^Jph3fhB*OJQJ^Jph^_ ___``Gaaaaaaa9GTciw dd[$\$gde[ dd[$\$gd & Fdd[$\$gd$4i dd[$\$gdV Array of items x doesnt have a separator because there is no sequence. (assumes choice does not allow dfdl:separator. ) This next one: Works because there is a separator. What about: Again the element of x are not separated. [MJH element x needs to have a around it [if separators are to appear between instances of x]. The separator is inherited from the complex type. MaxOccurs is not a property of x, it is a property of the container which contains instances of x [which is the particle in xsd model terms, its just that serialized xsd collapses particles and the object they contain].] SMH: With [clarifications] TXs statement makes sense. Resolved (drop occursstopvaluekind, occursstop value always logical, drop occursseparator) (done) See separate slides on occursSeparator. Resolved rename occurs, occurskind (done) 17. Arrays - what does occursKind mean when using separators to determine the number of repeats? SMH: It was noted that this questions was not answered by the slides. Need WG to propose an updated list of enums for occursCountKind that handles delimited ending. Not Resolved: enums? 17. Array stop value - make it return a boolean value expression - removes need for type conformance, allows stop value for complex elements - but what do we do on output? Consider a variable markup mechanism: See separate slides on occursSeparator. [MJH -- ???] SMH: The use case here is when you have an array that is terminated by a logical value, and you want that logical value to appear on output also. Because its logical not literal, markup (including variable markup) cant be used. Because we want the value to appear on output, cant use an assertion as while that will detect the end when parsing, it will not insert the value when unparsing. TX handles this by using a component rule (parsing) and forcing the user to add the stop value explicitly (unparsing). Resolved: keep occursstopvalue, check wording is clear (done) 5CP\kPh$ & Fdd[$\$gd$4ihdd[$\$^hgdEK & Fdd[$\$gd$4i dd[$\$gd< dd[$\$gde[k5OPXfghεyf[Sh$4iB*phh<h$4iB*ph%h<h$4iB*CJOJQJaJphh<hS `5h<h<5 h<5hEKhS `B*ph3fhRB*OJQJ^JphhS `B*OJQJ^Jph!hThS `B*OJQJ^JphhzB*phhEKB*ph3fhEKB*phh,>)B*phhEKhEKB*ph3fhzhzB*phh]c #$FTUX @GH·xxxxphZOhE hS `B*ph3fhFyB*OJQJ^JphhS `B*ph3fhI-B*ph3fhE B*ph3fhE hE B*ph3fhE hEKB*ph3fhGhGB*ph h?35h<h?35 h<5h?3h<h$4iB*ph%h<h$4iB*CJOJQJaJphhEKhS `B*ph3f!hThS `B*OJQJ^JphhS `B*OJQJ^JphPQv HgdS ` dd[$\$gd?3 1h/ =!"#$%$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5$$If!vh555V5#v#v#vV#v:Vl t6555V5@@@ xgNormalCJ_HaJmH sH tH DAD Default Paragraph FontRi@R  Table Normal4 l4a (k(No Listj@j " Table Grid7:V0 X)*16?LMORUVWYpstuw)-013befgjJNRSV  rvz{~GJKLO  wz{|     R U V W Z     ~               b 0 1 Vrsuv67V| %IJlmzaab\dGfT[#>-:`c !""""#O#z#|###c$e$}$$$X%d%|%0&&&'M'r''''''((( )A)M)))6*u**2+T+V+n++G,,--8-R-|---...%/_///////0b00I1k111112Q3^33333H4]4_4w446667z77788v9999%:'::;<<==p>>?? ?"?Z??:@@@@ZAkAyAAAAAAAAAAA B!B6BJBSBjBwB|BCCPDDDDDDDKEfEqE=FFCGGGAHjHIIhJxJJJKpKKLL)MCMMMMMM NN%NNNNN+O9OFOUOyOOOOOOPPP-PYPQRtRRR*SSSTTUU8UCUyUUUUUWW X00000@0@0@000@0@0@000@0@0@000@0@0@0 00@0@0@0 00@0@0@000@0@0@000@0@0@0 00@0@0@000@0@0@0 00@0@0@000@0@0@000@0@0@000@0@0@000@0@0@000@0@0@000@0@0@000@0@0@000@0@0@000@0@0@000@0@0@0 00@0@0@000@0@0@0 00@0@0@000@0@0000@0@0@0 00@0@0@000@0 @0 @0 00@0 @0 @0 00@0 @0 @0 0000 0000000000 0000000000" 00 0 000000 000000 0000 000000000000000000000000000000000 0000000000 00000 0 000 0 000 0 0000 0 00000000000000000000 0 0000 000000000000000 00000 000000! 0! 00000 0000 0000 0000000000 000000000000000000 000000 0000000000000000000000000000000000000 00000 000000000 0000000000000000000000000000000000 000 00000000000000'::;<< X@00 @00@00@00@00@00 6l"(>+.G28F=@DHJZONRW^kH1RTUWXZ\]_`cdfhijlmoq{|LV t 0 f  R zK {V 1I$-38=CJTW^H2456789:;<=>?@ABCDEFGHIJKLMNOPQSVY[^abegknprz}H38@0(  B S  ? OLE_LINK1 OLE_LINK2AHAH XII X|lN$I77 X77 X9*urn:schemas-microsoft-com:office:smarttagsplace8*urn:schemas-microsoft-com:office:smarttagsCity 15bk().hoptWYr  'Uh   [ f ? P S e "#&n{ #<Nbhdvw{3;sv~%(035Absu  Mdj5K;P 4=o{ FSs~#IV+ 6 N Y !!*!6!G!T!"">"M"a"p" ##0#4#####$$$$% %%%0&:&&&&&''5'B'W'f'v''''( (((((")1)*&*Q*[*y****H/K////030T0h00d3w3333344778 8*808i8w888889999::::; ;<;D;K;Y;v;;0<5<Y<c<i<|<<<<<<<i=s=??HALA6BIBJBRBSB]BBBBBpDyDDDDDDEE%E,E ! "q"w" ##|####$$*','['f'z''''((((&)1)))*&*,F,t,,--g-j-..00d3w33344668 8,808::;<<<>>jBrBwB{BDDDDEEgEoEuEEYF`FGG$G+GGGHHHJOJJJKKMMMMpNwNNNNNUOxOOOOOOO7PIPRRTTTT9UAUUUWW X3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333*LMORVWYptuw)013bfgj JRSV   rz{~GJLO  wy|    R V W Z  ~  Vy7Vmb,-:8 c O#y#z#{#|##c$d$e$}$X%c%d%|%))T+U+V+n+,,C-]-.._/e////012Q3^33333H4\4]4^4_4w4666788v9999<<==p>>?? ?"?@ ALLSS X X7'rs tiR"Btikb*sW&vYY{rƣ^`OJPJQJ^Jo(n^`OJQJ^Jo(hHo^`OJQJo(hH  ^ `OJQJo(hH\ \ ^\ `OJQJ^Jo(hHo,,^,`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.!^`CJOJQJ^JaJo(hHx^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.^`o() ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH." R W&vR R"BR &:&R &:&R &:&R &:&R &:&S &:&S &:& S &:&,S &:&8S &:&DS &:&PS &:&\S &:&hS &:&tS &:&S &:&S &:&S &:&S &:&S &:&S &:&S &:&S &:&S &:&S &:&S &:&T &:&T kb07'rY{/]>     Xnj        LN}         e fMfMufMYfMM~&fM9HfM SfM\0wfM|?3A.>DGXv1y*9P1&?! " |$x%:&,>)o),$,8,(+-9*2z24>4 565S6l78 9[9r9< @>GF.KEKa MS0MP7Q!{QHT"3U>U )V*RVPX QXcYZ [e[[\S `Y`,c]cejexg=h$4iUyi j}%k0oppRqrrNtr/v+vY yFy8{RK~,.1cZMxYDT lAQ[Mx" f-VJ8/Hu\Q[Jn !WMTx4DVqS}4I-2f:Z *yHO\s LqM KzT$mPaR E y&KX. t..@ Bz~j* ;#juRY;vN(d 6*16?LMORUVWYpstuw)-013befgjJNRSV  rvz{~GJKLO  wz{|     R U V W Z     ~             X@  !#$%+,/02349:>?M XP@P(P*PX@P.P0Pd@P8Pt@P>P@PBPDP@PLP@PRP@P@UnknownGz Times New Roman5Symbol3& z Arial] sans-serifTimes New Roman;WingdingsA MS Shell Dlg3Times?5 z Courier New"qhffJ&# J,# J,!24dWW 3qKP)?$4i1Michael J. Beckerle Alan Powell,        Oh+'0x  4 @ LX`hp1Michael J. Beckerle Normal.dot Alan Powell16Microsoft Word 10.0@`A@D@v@@|9L# J՜.+,0 hp   Oco, Inc.,W 1 Title  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry FkKLData J1Table:zWordDocument"SummaryInformation(DocumentSummaryInformation8CompObjj  FMicrosoft Word Document MSWordDocWord.Document.89q