Yep, it is processed but not parsed. That means that you can put whatever
you want inside a CDATA construct, and the xml parser will not try to
process it, it will be passed as-is to the upper layer.

Urlencoding wouldn't do, since "&" is a valid symbol on an url context, but
not on an xml document (except inside CDATA of course).

You just need to replace non-valid xml characters with their xml-valid
counterparts. Apart from special ascii characters (which are rarely part of
an url anyway, or are urlencoded already) you should just change:

& --> &
> --> >
< --> &lt;

Regards,

Alejandro

2009/10/25 Nikos Balkanas <[email protected]>

>  Well from w3c:
>
> "The term <![CDATA] is used about text data that should not be parsed by
> the XML parser."
>
> I interpreted this as not been processed, but it seems it is do not parse.
> Lastly shouldn't dlr-url be urlencoded, addressing all these issues?
>
> Nikos
>
> ----- Original Message -----
> *From:* Alejandro Guerrieri <[email protected]>
> *To:* Nikos Balkanas <[email protected]>
> *Cc:* [email protected]
> *Sent:* Sunday, October 25, 2009 12:07 PM
> *Subject:* Re: rejection of dlr-url field in CDATA
>
> No, any complaint XML parser should treat a CDATA section "as is", without
> enforcing XML compliance with the data inside. The goal of CDATA is to be
> able to pass data without having to worry for invalid characters, etc. If
> you want to ignore something on XML, you should use a <!-- comment -->.
>
> I also think the "string hack" is for performance reasons. Besides, ois not
> a big deal to create valid xml, specially for a simple url: usually just
> replacing &, > and < for their xml counterparts (&amp; &gt; and &lt;) does
> the trick (you may need to replace other symbols maybe).
>
> Regards,
>
> Alejandro
>
>
>
> 2009/10/25 Nikos Balkanas <[email protected]>
>
>> Hi,
>>
>> This is expected behaviour. Libxml would also ignore the CDATA secrion, as
>> it should, resulting in an empty dlr-url address, which would also probably
>> fail kannel as malformed.
>>
>> What you want to do is to use test1, but with dlr-url urlencoded.
>>
>>
>> BR,
>> Nikos
>> ----- Original Message ----- From: "Garth Patil" <[email protected]>
>> To: <[email protected]>
>> Sent: Sunday, October 25, 2009 3:08 AM
>> Subject: rejection of dlr-url field in CDATA
>>
>>
>>
>> Hi,
>>> I am trying to send a message to the smsbox using the XML format
>>> specified here (
>>> http://kannel.org/download/1.4.3/userguide-1.4.3/userguide.html#POSTXML
>>> ).
>>> I have attached 2 example documents that should both work properly.
>>> The only difference is that the second one has the dlr-url element
>>> enclosed in a CDATA section. The message in post_test1.xml succeeds,
>>> and the message in post_test2.xml fails with the error "DLR-URL field
>>> misformed, rejected" and produces the following logging statement in
>>> the smsbox log:
>>> 2009-10-24 17:56:10 [4572] [3] DEBUG: Status: 400 Answer: <DLR-URL
>>> field misformed, rejected>
>>> Any ideas why using a CDATA section around the dlr-url should cause
>>> parsing of this field to fail? On a related note, NOT using a CDATA
>>> section or otherwise encoding the url causes the XML to be malformed,
>>> so if the parser was being strict (try opening it in Firefox) it
>>> should fail.
>>> Thanks for your help,
>>> Garth
>>>
>>>
>>
>>
>

Reply via email to