Hi,
Thanks for the thoughtful responses guys. I used the urlencoding idea
and the &, <, and > replacement idea and neither works properly. When
it is urlencoded, the message is rejected with the "DLR-URL field
misformed, rejected" error. When the 3 characters are changed, the
dlr-url is then used without replacing them. However, now that I
understand what the code is doing, I can patch it to correctly deal
with CDATA sections.
Best,
Garth

On Sun, Oct 25, 2009 at 5:49 AM, Alejandro Guerrieri
<[email protected]> wrote:
> 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:
> & --> &amp;
>> --> &gt;
> < --> &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
>> To: Nikos Balkanas
>> 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