I've changed the version number to 1.2 to imply continuity with the XML-RPC
spec document (assuming base64 was 1.1). I'll throw this up on a web page
shortly.
====
lcdXML-RPC 1.2 specification
Introduction (Non-normative):
The XML-RPC specification document contains contradictory requirements
for string handling. As a result, it is not possible to conform to
it, and designers of individual XML-RPC systems have implemented both
sides of the contradiction. As there are many fielded XML-RPC
systems, it would not be popular or useful towards the overall goal of
interoperation to declare one side or the other to be in error. The
lcdXML-RPC specification lists specific areas that can result in
undefined behavior between lcdXML-RPC systems.
It is intended that existing XML-RPC implementations are compliant
with lcdXML-RPC. Implementations legitimately may claim compliance
with lcdXML-RPC, and this should provide more useful labeling for
interoperability. New implementations may provide programmatic
enforcement of the additional restrictions of lcdXML-RPC to assist in
the construction of interoperable systems.
Authors of lcdXML-RPC systems are encouraged to document the the
actual and intended behavior of their implementations when
encountering situations undefined in lcdXML-RPC.
It is intended that other standards may standardize behavior that is
undefined in lcdXML-RPC; in particular, defining the issue of UTF-8
encoding.
Amendment (Normative):
lcdXML-RPC 1.2 amends the XML-RPC spec as follows:
===
<string>, string-valued <value>s, and <name>s are restricted to the
set of US-ASCII characters 0x20-0x7E, plus CR, LF, and HT.
Implementations may treat CR or the sequence CR LF as LF.
"<" and "&" must be encoded as "<" and "&" respectively. ">"
may be encoded as ">" and must be encoded as ">" when occuring
in the sequence "]]>".
The behavior of implementations is undefined when receiving the
following constructs:
a) characters outside the range 0x20-0x7E plus CR, LF, and HT,
b) XML CDATA sections,
c) XML character references ("7"), and
d) XML character entities other than "<", ">", and "&".
Any transmission of these constructs is outside this specification and
may be used only by private agreement between endpoints.
Update Question #5 ("What characters are allowed in strings?") is deleted.
===
Rationale (Non-normative):
The restrictions above are necessary to ensure interoperability
between lcdXML-RPC systems using ad-hoc and full XML processors. In
particular,
o Implementations with full XML processors reject characters in the
range 0x00-0x1F (except CR, LF, HT).
o Implementations with full XML processors may treat their input as
UTF-8. In those systems, characters in the range 0x80-0xFF will be
processed as UTF-8 multibyte encodings. Some ad-hoc implementations
process characters in that range directly rather than encoding them
as UTF-8.
o Many ad-hoc processors do not generate or process CDATA sections,
character references, or all the XML character entities.
--
Jay