<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="country-region"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="PostalCode"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="State"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="Street"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="City"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="address"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:sans-serif;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p
        {mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman";}
tt
        {font-family:"Courier New";}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
/* List Definitions */
@list l0
        {mso-list-id:746608461;
        mso-list-type:hybrid;
        mso-list-template-ids:-457936674 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1
        {mso-list-id:1036732212;
        mso-list-type:hybrid;
        mso-list-template-ids:-1447769390 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I am way out of the loop here, but I felt
motivated to throw in a few cents on this discussion.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>As far as scope goes, it seems to me a
reasonable goal to consider would be to include all the primitive types of XML
Schema as in scope. That would suggest that hexBinary and base64 should be
included.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Regarding implementation, what concerns me
about the discussion is the confusion between data model and representation
that I seem to be hearing. (Perhaps I am bringing this to the discussion in
which case please set me straight).<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>The way it looks to me is that when you
specify the XML Schema “type” in the DFDL document you are
specifying the data model, or another way to put it is that you are specifying the
form of the XML document that would be output if your DFDL parser were
producing a document. This should be separated from the discussion of the
representation of the data that you are reading in.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>So what I expect is that there are three
different data models for this kind of data:<o:p></o:p></span></font></p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal style='color:navy;mso-list:l0 level1 lfo1'><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>Sequence
of bytes<o:p></o:p></span></font></li>
<li class=MsoNormal style='color:navy;mso-list:l0 level1 lfo1'><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>hexBinary<o:p></o:p></span></font></li>
<li class=MsoNormal style='color:navy;mso-list:l0 level1 lfo1'><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>base64<o:p></o:p></span></font></li>
</ol>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>And there are three different underlying
representations of the data that could be read from:<o:p></o:p></span></font></p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal style='color:navy;mso-list:l1 level1 lfo2'><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>bytes<o:p></o:p></span></font></li>
<li class=MsoNormal style='color:navy;mso-list:l1 level1 lfo2'><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>bin
hex<o:p></o:p></span></font></li>
<li class=MsoNormal style='color:navy;mso-list:l1 level1 lfo2'><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>base
64<o:p></o:p></span></font></li>
</ol>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>And ideally you should be able to choose
the model and the data separately (IMO).<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Am I making sense?<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Martin<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=3 width="100%" align=center tabindex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
dfdl-wg-bounces@ogf.org [mailto:dfdl-wg-bounces@ogf.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Mike Beckerle<br>
<b><span style='font-weight:bold'>Sent:</span></b> Monday, November 19, 2007
8:34 AM<br>
<b><span style='font-weight:bold'>To:</span></b> Steve Hanson<br>
<b><span style='font-weight:bold'>Cc:</span></b> dfdl-wg@ogf.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [DFDL-WG] DFDL
hexBinary and base64Binary</span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
</span></font><font size=2 face=sans-serif><span style='font-size:10.0pt;
font-family:sans-serif'>Steve, (& team)</span></font> <br>
<br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>What
you are suggesting is the simplest of the simple. No 'text' representation at
all, Users who have actual hexidecimal strings in their data can always
model them as either strings or if they're small enough, integers in base 16
text.</span></font> <br>
<br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>In
this case the only difference between hexBinary and base64Binary is what
happens if you coerce the infoset value to a string and this is into the API
space which is outside the scope of DFDL.</span></font> <br>
<br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>To
me this suggests that we leave out base64Binary entirely for V1.0 to avoid
confusion (it will be confusing to people to explain that hexBinary and base64Binary
are synonymous in DFDL)</span></font> <br>
<br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>So
the net functionality for DFDL v1.0 would be this only:</span></font> <o:p></o:p></p>
<table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%;border:outset 3.0pt'>
<tr>
<td width="9%" valign=top style='width:9.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>type</span></font></i></b><o:p></o:p></p>
</td>
<td width="9%" valign=top style='width:9.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>representation</span></font></i></b><o:p></o:p></p>
</td>
<td width="27%" valign=top style='width:27.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>lengthKind</span></font></i></b><o:p></o:p></p>
</td>
<td width="16%" valign=top style='width:16.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>resulting length (in bytes)</span></font></i></b><o:p></o:p></p>
</td>
<td width="37%" valign=top style='width:37.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>other</span></font></i></b><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:hexBinary</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>binary</span></font> <br>
(note: required - If 'text' specified it causes a schema definition error.
This reserves the 'text' behavior for possible future use.) <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>implicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:length facet </span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>explicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>dfdl:length </span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>Validation: xs:length facet must be equal to resulting
length in bytes </span></font> <o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>(TBD:
similar range checks on xs:minLength, xs:maxLength) </span></font><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>endOfData or delimited or nullTerminated</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>variable</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>Validation: xs:length facet must be equal to resulting
length in bytes </span></font> <o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>(TBD:
similar range checks on xs:minLength, xs:maxLength) </span></font><o:p></o:p></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
<br>
<br>
</span></font><font size=2 face=sans-serif><span style='font-size:10.0pt;
font-family:sans-serif'>I'm very happy with this for V1.0.</span></font> <br>
<br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>Any
further comments or should we go with this for V1.0?</span></font> <br>
<br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>...mikeb</span></font>
<br>
<br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>Mike
Beckerle<br>
STSM, Architect, Scalable Computing<br>
IBM Software Group<br>
Information Platform and Solutions<br>
<st1:place w:st="on"><st1:City w:st="on">Westborough</st1:City>, <st1:State
w:st="on">MA</st1:State> <st1:PostalCode w:st="on">01581</st1:PostalCode></st1:place><br>
direct: voice and FAX 508-599-7148<br>
assistant: Pam Riordan <br>
priordan@us.ibm.com
<br>
508-599-7046<br>
<br>
</span></font><br>
<br>
<o:p></o:p></p>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%'>
<tr>
<td width="40%" valign=top style='width:40.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><b><font size=1 face=sans-serif><span style='font-size:
7.5pt;font-family:sans-serif;font-weight:bold'>Steve Hanson
<smh@uk.ibm.com></span></font></b><font size=1 face=sans-serif><span
style='font-size:7.5pt;font-family:sans-serif'> </span></font><br>
<font size=1 face=sans-serif><span style='font-size:7.5pt;font-family:sans-serif'>Sent
by: dfdl-wg-bounces@ogf.org</span></font> <o:p></o:p></p>
<p><font size=1 face=sans-serif><span style='font-size:7.5pt;font-family:
sans-serif'>11/19/2007 10:23 AM</span></font> <o:p></o:p></p>
</td>
<td width="59%" valign=top style='width:59.0%;padding:.75pt .75pt .75pt .75pt'>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%'>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><font size=1
face=sans-serif><span style='font-size:7.5pt;font-family:sans-serif'>To</span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=sans-serif><span style='font-size:
7.5pt;font-family:sans-serif'>dfdl-wg@ogf.org</span></font> <o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><font size=1
face=sans-serif><span style='font-size:7.5pt;font-family:sans-serif'>cc</span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><font size=1
face=sans-serif><span style='font-size:7.5pt;font-family:sans-serif'>Subject</span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=sans-serif><span style='font-size:
7.5pt;font-family:sans-serif'>Re: [DFDL-WG] DFDL hexBinary and base64Binary</span></font><o:p></o:p></p>
</td>
</tr>
</table>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
</table>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p></o:p></span></font></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
<br>
<br>
</span></font><font size=2 face=sans-serif><span style='font-size:10.0pt;
font-family:sans-serif'><br>
My view: The logical type is binary, so the data in the information item is
binary, the length facets should always deal in bytes, and validation checks
the length of the binary data in bytes.</span></font> <br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'><br>
>From the above, of the two simplifications below, I would rather disallow the
text representations of xs:hexBinary and xs:base64Binary. Fyi MRM today <br>
- does not support text reps for binary <br>
- has not had such a request from users <br>
- uses length/minLength/maxLength facets to validate binary field length
post-parse</span></font> <font size=2 face=sans-serif><span style='font-size:
10.0pt;font-family:sans-serif'><br>
- uses length/maxLength to populate the default for the physical length. </span></font><br>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'><br>
Regards, Steve<br>
<br>
Steve Hanson<br>
WebSphere Message Brokers<br>
<st1:place w:st="on"><st1:City w:st="on">Hursley</st1:City>, <st1:country-region
w:st="on">UK</st1:country-region></st1:place><br>
Internet: smh@uk.ibm.com<br>
Phone (+44)/(0) 1962-815848</span></font> <o:p></o:p></p>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%'>
<tr>
<td width="46%" valign=top style='width:46.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><b><font size=1 face=sans-serif><span style='font-size:
7.5pt;font-family:sans-serif;font-weight:bold'>Mike Beckerle
<beckerle@us.ibm.com></span></font></b><font size=1 face=sans-serif><span
style='font-size:7.5pt;font-family:sans-serif'> <br>
Sent by: dfdl-wg-bounces@ogf.org</span></font> <o:p></o:p></p>
<p><font size=1 face=sans-serif><span style='font-size:7.5pt;font-family:
sans-serif'>16/11/2007 23:09</span></font> <o:p></o:p></p>
</td>
<td width="53%" valign=top style='width:53.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%'>
<tr>
<td width="14%" valign=top style='width:14.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><font size=1
face=sans-serif><span style='font-size:7.5pt;font-family:sans-serif'>To</span></font><o:p></o:p></p>
</td>
<td width="85%" valign=top style='width:85.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=sans-serif><span style='font-size:
7.5pt;font-family:sans-serif'>dfdl-wg@ogf.org</span></font> <o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><font size=1
face=sans-serif><span style='font-size:7.5pt;font-family:sans-serif'>cc</span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><font size=1
face=sans-serif><span style='font-size:7.5pt;font-family:sans-serif'>Subject</span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=sans-serif><span style='font-size:
7.5pt;font-family:sans-serif'>[DFDL-WG] DFDL hexBinary and base64Binary</span></font><o:p></o:p></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%'>
<tr>
<td width="50%" valign=top style='width:50.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td width="50%" valign=top style='width:50.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
</table>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p></o:p></span></font></p>
</td>
</tr>
</table>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<br>
<br>
</span></font><font size=2 face=sans-serif><span style='font-size:10.0pt;
font-family:sans-serif'><br>
<br>
I'm trying to wrap up the opaque/hexBinary/base64Binary topic.</span></font> <font
size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'><br>
<br>
I need opinions on this discussion.</span></font> <font size=2 face=sans-serif><span
style='font-size:10.0pt;font-family:sans-serif'><br>
<br>
Currently we have a property, dfdl:binaryType </span></font><b><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial;font-weight:bold'>:</span></font></b>
<b><font size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial;
font-weight:bold'><br>
<br>
Properties Specific to Binary Types (hexBinary, base64Binary)</span></font></b>
<o:p></o:p></p>
<table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%;border:outset 3.0pt'>
<tr>
<td width="19%" valign=top style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><i><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial;font-style:italic'>Property Name</span></font></i> <o:p></o:p></p>
</td>
<td width="80%" valign=top style='width:80.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><i><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial;font-style:italic'>Description</span></font></i> <o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>binaryType</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>Enum</span></font> <o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>This
specifies the encoding method for the binary. </span></font> <o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>Valid
values are ‘unspecified’, ‘hexBinary’,
‘base64Binary’, ‘uuencoded’</span></font> <o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>Annotation:
dfdl:element (simple type ‘binary’, ‘opaque’)</span></font><o:p></o:p></p>
</td>
</tr>
</table>
<p><font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'><br>
<br>
This property speaks to what kinds of representations can we interpret and
construct logical hexbinary values from? (similarly base64Binary)</span></font>
<font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'><br>
<br>
I believe the above is not clear, and causes issues with the xs:length facet of
XSD.</span></font> <font size=2 face=sans-serif><span style='font-size:10.0pt;
font-family:sans-serif'><br>
<br>
I propose the 4 tables below which describe the 4 cases:</span></font> <font
size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'><br>
<br>
hexbinary - binary</span></font> <font size=2 face=sans-serif><span
style='font-size:10.0pt;font-family:sans-serif'><br>
hexbinary - text</span></font> <font size=2 face=sans-serif><span
style='font-size:10.0pt;font-family:sans-serif'><br>
base64binary - binary</span></font> <font size=2 face=sans-serif><span
style='font-size:10.0pt;font-family:sans-serif'><br>
base64binary - text</span></font> <font size=2 face=sans-serif><span
style='font-size:10.0pt;font-family:sans-serif'><br>
<br>
I have specified these so that the meaning of the xs:length facet is always
interpreted exactly as in XSD. It always refers to the number of bytes of the
unencoded binary data, and never to the number of characters in the encoded
form.</span></font> <o:p></o:p></p>
<table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%;border:outset 3.0pt'>
<tr>
<td width="9%" valign=top style='width:9.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>type</span></font></i></b><o:p></o:p></p>
</td>
<td width="9%" valign=top style='width:9.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>representation</span></font></i></b><o:p></o:p></p>
</td>
<td width="27%" valign=top style='width:27.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>lengthKind</span></font></i></b><o:p></o:p></p>
</td>
<td width="16%" valign=top style='width:16.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>resulting length (in bytes)</span></font></i></b><o:p></o:p></p>
</td>
<td width="37%" valign=top style='width:37.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>other</span></font></i></b><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:hexBinary</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>binary</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>implicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:length facet </span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>explicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>dfdl:length </span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>Validation: xs:length facet must be equal to resulting
length in bytes </span></font> <o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>(TBD:
similar range checks on xs:minLength, xs:maxLength) </span></font><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>endOfData or delimited or nullTerminated</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>variable</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
</table>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%;border:outset 3.0pt'>
<tr>
<td width="7%" valign=top style='width:7.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>type</span></font></i></b><o:p></o:p></p>
</td>
<td width="7%" valign=top style='width:7.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>representation</span></font></i></b><o:p></o:p></p>
</td>
<td width="19%" valign=top style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>lengthKind</span></font></i></b><o:p></o:p></p>
</td>
<td width="15%" valign=top style='width:15.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>resulting length (in characters)</span></font></i></b><o:p></o:p></p>
</td>
<td width="49%" valign=top style='width:49.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>other</span></font></i></b><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:hexBinary</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>text</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>implicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>2 * xs:length facet</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>explicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>dfdl:length</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>Validation: xs:length facet * 2 must be equal to
resulting character length (after removing all non-hex characters)</span></font>
<o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'> (TBD:
similar range checks on xs:minLength, xs:maxLength) </span></font><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>endOfData, delimited, nullTerminated</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Variable</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
</table>
<p style='margin:0in;margin-bottom:.0001pt'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%;border:outset 3.0pt'>
<tr>
<td width="11%" valign=top style='width:11.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>type</span></font></i></b><o:p></o:p></p>
</td>
<td width="9%" valign=top style='width:9.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>representation</span></font></i></b><o:p></o:p></p>
</td>
<td width="26%" valign=top style='width:26.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>dfdl:lengthKind</span></font></i></b><o:p></o:p></p>
</td>
<td width="15%" valign=top style='width:15.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>resulting length (in bytes)</span></font></i></b><o:p></o:p></p>
</td>
<td width="36%" valign=top style='width:36.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>other</span></font></i></b><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:base64Binary</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>binary</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>implicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:length facet </span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>explicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>dfdl:length </span></font><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>Validation: xs:length facet must be equal to resulting
length in bytes </span></font><o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>(TBD:
similar range checks on xs:minLength, xs:maxLength) </span></font><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>endOfData or delimited or nullTerminated</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>variable</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
</table>
<p style='margin:0in;margin-bottom:.0001pt'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0 width="100%"
style='width:100.0%;border:outset 3.0pt'>
<tr>
<td width="8%" valign=top style='width:8.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>type</span></font></i></b><o:p></o:p></p>
</td>
<td width="7%" valign=top style='width:7.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>representation</span></font></i></b><o:p></o:p></p>
</td>
<td width="18%" valign=top style='width:18.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>lengthKind</span></font></i></b><o:p></o:p></p>
</td>
<td width="14%" valign=top style='width:14.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>resulting length (in characters)</span></font></i></b><o:p></o:p></p>
</td>
<td width="51%" valign=top style='width:51.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><b><i><font size=1
face=Arial><span style='font-size:7.5pt;font-family:Arial;font-weight:bold;
font-style:italic'>other</span></font></i></b><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>xs:base64Binary</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>text</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>implicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>8/6 * xs:length facet</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>explicit</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>dfdl:length</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial'>Validation: xs:length facet * 8/6 must be
equal to resulting character length (after removing all non-base64-encoding
characters)</span></font> <o:p></o:p></p>
<p><font size=1 face=Arial><span style='font-size:7.5pt;font-family:Arial'>(TBD:
similar range checks on xs:minLength, xs:maxLength) </span></font><o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>endOfData, delimited, nullTerminated</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Variable</span></font> <o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
</td>
</tr>
</table>
<p><font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>Looking
at the above, one way to simplify things quite a bit is to disallow the
xs:length and xs:minLength and xs:maxLength facet on hexBinary and
base64Binary types in DFDL schemas.</span></font> <o:p></o:p></p>
<p><font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>Then
the implicit lengthKind goes away, and the complex validation check for the
xs:length facet goes away. I recommend this.</span></font> <o:p></o:p></p>
<p><font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>Another
simplification alternative is to disallow representation text altogether, but I
am concerned that peopel with data that does contain hex or base64 data will
naturally want to use these types to model it. I don't recommend this.</span></font>
<o:p></o:p></p>
<p><font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:sans-serif'>...mikeb</span></font>
<o:p></o:p></p>
<p style='margin-bottom:12.0pt'><font size=2 face=sans-serif><span
style='font-size:10.0pt;font-family:sans-serif'>Mike Beckerle<br>
STSM, Architect, Scalable Computing<br>
IBM Software Group<br>
Information Platform and Solutions<br>
<st1:place w:st="on"><st1:City w:st="on">Westborough</st1:City>, <st1:State
w:st="on">MA</st1:State> <st1:PostalCode w:st="on">01581</st1:PostalCode></st1:place><br>
direct: voice and FAX 508-599-7148<br>
assistant: Pam Riordan <br>
priordan@us.ibm.com <br>
508-599-7046</span></font><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><br>
<tt><font face="Courier New">--</font></tt><br>
<tt><font face="Courier New">dfdl-wg mailing list</font></tt><br>
<tt><font face="Courier New">dfdl-wg@ogf.org</font></tt><br>
<tt><font face="Courier New">http://www.ogf.org/mailman/listinfo/dfdl-wg</font></tt></span></font>
<font face=sans-serif><span style='font-family:sans-serif'><br>
</span></font><br>
<br>
<o:p></o:p></p>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=3 width="100%" align=center>
</span></font></div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<p><i><font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:
sans-serif;font-style:italic'>Unless stated otherwise above:<br>
IBM United Kingdom Limited - Registered in <st1:country-region w:st="on">England</st1:country-region>
and <st1:country-region w:st="on"><st1:place w:st="on">Wales</st1:place></st1:country-region>
with number 741598. <br>
Registered office: <st1:Street w:st="on"><st1:address w:st="on">PO Box 41,
North</st1:address></st1:Street> Harbour, <st1:City w:st="on"><st1:place
w:st="on">Portsmouth</st1:place></st1:City>, Hampshire PO6 3AU</span></font></i>
<o:p></o:p></p>
<p style='margin-bottom:12.0pt'><font size=3 face=sans-serif><span
style='font-size:12.0pt;font-family:sans-serif'><br>
</span></font><br>
<br>
<font face=sans-serif><span style='font-family:sans-serif'><br>
<br>
</span></font><br>
<br>
<o:p></o:p></p>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=3 width="100%" align=center>
</span></font></div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<p><i><font size=2 face=sans-serif><span style='font-size:10.0pt;font-family:
sans-serif;font-style:italic'>Unless stated otherwise above:<br>
IBM United Kingdom Limited - Registered in <st1:country-region w:st="on">England</st1:country-region>
and <st1:country-region w:st="on"><st1:place w:st="on">Wales</st1:place></st1:country-region>
with number 741598. <br>
Registered office: <st1:Street w:st="on"><st1:address w:st="on">PO Box 41,
North</st1:address></st1:Street> Harbour, <st1:City w:st="on"><st1:place
w:st="on">Portsmouth</st1:place></st1:City>, Hampshire PO6 3AU</span></font></i>
<o:p></o:p></p>
<p><font size=3 face=sans-serif><span style='font-size:12.0pt;font-family:sans-serif'><br>
</span></font><br>
<br>
<font face=sans-serif><span style='font-family:sans-serif'><br>
</span></font><tt><font size=2 face="Courier New"><span style='font-size:10.0pt'>--</span></font></tt><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><br>
<tt><font face="Courier New"> dfdl-wg mailing list</font></tt><br>
<tt><font face="Courier New"> dfdl-wg@ogf.org</font></tt><br>
<tt><font face="Courier New"> http://www.ogf.org/mailman/listinfo/dfdl-wg</font></tt></span></font>
<o:p></o:p></p>
</div>
</body>
</html>