Hi all, <div><br></div><div>We are currently developing Jabber-RPC based interactions in a distributed application.</div><div><br></div><div>We use the base64 type to transmit binary data over the wire and we are facing a compatibility issue between  client and server implementations:</div>

<div><br></div><div>The capitalization of the 'Base64' element seems to be inconsistent across the different documents related to the standard.  </div><div><br></div><div>The XEP-0009 document [1] provides a schema that describes Base64 with capital 'B'. It also has a disclaimer saying:</div>

<div><br></div><div>"<span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">There is no official XML schema for XML-RPC. The main body </span><span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">of this schema has been borrowed </span></div>

<div><span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">from an unofficial schema </span><span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); "> representation contained in the book "Processing XML With </span><span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">Java" by Elliotte Rusty Harold, </span></div>

<div><span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">as located at:</span></div><div><span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); "><a href="http://www.ibiblio.org/xml/books/xmljava/chapters/ch02s05.html">http://www.ibiblio.org/xml/books/xmljava/chapters/ch02s05.html</a></span>"</div>

<div><br></div><div>That document [2] presents a DTD and an XSD as definitions for the XML-RPC messages.</div><div><br></div><div>The DTD declares base64 in lowercase :</div><div><span class="Apple-style-span" style="font-family: 'Times New Roman'; background-color: rgb(255, 255, 255); font-size: medium; "><pre class="programlisting">

<!ELEMENT base64           (#PCDATA)></pre></span></div><div>While the schema declares Base64 in uppercase:</div><div><span class="Apple-style-span" style="font-family: 'Times New Roman'; background-color: rgb(255, 255, 255); font-size: medium; "><pre class="programlisting">

<xsd:element name="Base64"        type="xsd:base64Binary"/></pre></span></div><div>Also, while looking at the complete XSD type definition, "Base64" is the only entry which does not follow the 'start with lowercase'  pattern  observed in the rest of the type declarations:</div>

<div><span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, Geneva, sans-serif; line-height: 16px; background-color: rgb(255, 255, 255); "><pre class="prettyprint" style="font-family: Courier, monospace; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(136, 136, 136); border-right-color: rgb(136, 136, 136); border-bottom-color: rgb(136, 136, 136); border-left-color: rgb(136, 136, 136); ">

<span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"i4"</span><span class="pln" style="color: rgb(0, 0, 0); ">            </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"xs:int"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"int"</span><span class="pln" style="color: rgb(0, 0, 0); ">           </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"xs:int"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"string"</span><span class="pln" style="color: rgb(0, 0, 0); ">        </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"ASCIIString"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"double"</span><span class="pln" style="color: rgb(0, 0, 0); ">        </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"xs:decimal"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"Base64"</span><span class="pln" style="color: rgb(0, 0, 0); ">        </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"xs:base64Binary"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"boolean"</span><span class="pln" style="color: rgb(0, 0, 0); ">       </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"NumericBoolean"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"dateTime.iso8601"</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"xs:dateTime"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"array"</span><span class="pln" style="color: rgb(0, 0, 0); ">         </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"ArrayType"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span><span class="pln" style="color: rgb(0, 0, 0); "><br>

</span><span class="tag" style="color: rgb(0, 0, 136); "><xs:element</span><span class="pln" style="color: rgb(0, 0, 0); "> </span><span class="atn" style="color: rgb(102, 0, 102); ">name</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"struct"</span><span class="pln" style="color: rgb(0, 0, 0); ">        </span><span class="atn" style="color: rgb(102, 0, 102); ">type</span><span class="pun" style="color: rgb(102, 102, 0); ">=</span><span class="atv" style="color: rgb(0, 136, 0); ">"StructType"</span><span class="tag" style="color: rgb(0, 0, 136); ">/></span></pre>

</span></div><div><br></div><div>The question is: is "Base64"  (in uppercase) a typo in the schema or is it the correct definition for it and must be respected by the implementations?</div><div><br></div><div>Many thanks,</div>

<div><br></div><div>Gerard Maas.</div><div><br></div><div><br></div><div>[1] <a href="http://xmpp.org/extensions/xep-0009.html">http://xmpp.org/extensions/xep-0009.html</a></div><div>[2] <span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); "><a href="http://www.ibiblio.org/xml/books/xmljava/chapters/ch02s05.html">http://www.ibiblio.org/xml/books/xmljava/chapters/ch02s05.html</a></span></div>

<div><span class="Apple-style-span" style="font-family: Courier, monospace; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); "><br></span></div><div><br></div><div><br></div><div>
<div>Disclaimer: I joined the list to discuss this issue. My excuses if this has been handled before, though I would appreciate the final conclusion of any previous discussions.</div></div>