Alain,
On 14 Apr 2006, at 07:32, Alain Picard wrote:
Once upon a time (release 6, Januari 21, 2004) xml-rpc used to decode messages thusly:
XML-RPC> (decode-xml-rpc (make-string-input-stream "<value>
<array> <data> </data> </array> </value>")) NIL XML-RPC>
But now (2004-06-17 Rudi Schlatte rudi@constantly.at), it does it this way: S-XML-RPC> (decode-xml-rpc (make-string-input-stream "<value>
<array> <data> </data> </array> </value>")) " "
Which I think is COMPLETELY wrong.
Whereas S-XML-RPC> (decode-xml-rpc (make-string-input-stream "<value><array><data></data></array></value>")) NIL
Is still OK.
So I think something is wrong with the parser.
The handling of whitespace (or the significance of whitespace) in XML and especially in between elements is tricky. I know that it is allowed and sometimes significant. So I would say that it depends upon the XML application, in this case XML-RPC.
The XML-RPC spec is not superclear about all this. But what is clear is that a <data> element can only contain <value> elements and nothing else. So the simplest change that I could make to fix your testcase would be:
[sven@voyager:~/apps/clnet/s-xml-rpc/s-xml-rpc]$ cvs diff src/xml- rpc.lisp Index: src/xml-rpc.lisp =================================================================== RCS file: /project/s-xml-rpc/cvsroot/s-xml-rpc/src/xml-rpc.lisp,v retrieving revision 1.8 diff -r1.8 xml-rpc.lisp 281c281 < (:|data| (nreverse seed)) ---
(:|data| (unless (stringp seed) (nreverse seed)))
(I did not yet check this in).
This change comes down to the following: before, any subelements (including text and/or whitespace) of <data> were accepted as is; now, all text (whitespace or not) as subelement of <data> are ignored.
Does this work for you ? Does anybody else have any opinion about this ?
Sven
-- Sven Van Caekenberghe - mailto:sven@beta9.be Beta Nine - software engineering - http://www.beta9.be .Mac - svc@mac.com - http://homepage.mac.com/svc
"Lisp isn't a language, it's a building material." - Alan Kay