invalid XML character

Marco Montel

Usenet Archive
Joined
Dec 7, 2004
Messages
2
Reaction score
0
I have two applications that should comunicate through an xml file. This xml will contain a CDATA section with a digital signature.

The problem is that the digital signature is composed of special character that are nor correctly recognized by the xml parser.

When you try to open the follow file with an xml editor, like jedit, you will see that the CDATA block is marked with follow error:

"An invalid XML character (Unicode: 0x6) was found in the CDATA section."

This is the xml file:

<?xml version="1.0" encoding="utf-8"?>
<Document>
<DataBlock>
<![CDATA[0‚V_ *†H†÷
 ‚VP0‚VL1 0+0‚FO *†H†÷
 ‚F@‚F<Content-Type: multipart/mixed;
boundary="----=_NextPart_717_3066_3832508151693287"
MIME-Version: 1.0

This is a multi-part message in MIME format.

------=_NextPart_717_3066_3832508151693287
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: base64
]]>
</DataBlock>
</Document>

How can I handle this special content in an xml file ? Should I use an other encoding ?

bye marco
 

Martin Honnen

Usenet Archive
Joined
Apr 8, 2000
Messages
6,174
Reaction score
0
Marco Montel wrote:

The problem is that the digital signature is composed of special character that are nor correctly recognized by the xml parser.

When you try to open the follow file with an xml editor, like jedit, you will see that the CDATA block is marked with follow error:

"An invalid XML character (Unicode: 0x6) was found in the CDATA section."

In XML 1.0 0x6 is indeed not an allowed character so you need to encode it, using Base64 encoding for instance.
 

Marco Montel

Usenet Archive
Joined
Dec 7, 2004
Messages
2
Reaction score
0
Martin said:
Marco Montel wrote:

In XML 1.0 0x6 is indeed not an allowed character so you need to encode it, using Base64 encoding for instance.

This is a great idea ! I didn't know that the xml 1.0 specification does not allow some control caracter. I see that xml 1.1 allow that, but my parser support only the XML 1.0 specification.

thanks a lot

bye marco
 

David Carlisle

Usenet Archive
Joined
Jan 5, 2000
Messages
609
Reaction score
0
Marco Montel said:
This is a great idea ! I didn't know that the xml 1.0 specification does not allow some control caracter. I see that xml 1.1 allow that, but my parser support only the XML 1.0 specification.

thanks a lot

bye marco

Even XML 1.1 wouldn't allow the character in a CDATA section.

in XML 1.1 you can encode the character as a character reference, but you can't have character references in a CDATA section (as & has no special meaning in a CDATA section)

David
 

lkrubner

Usenet Archive
Joined
Dec 2, 2004
Messages
86
Reaction score
0
I'm a total beginner, and I hope you won't mind a stupid question. I don't understand your point about the ampersand not having a special meaning in the CDATA section. Can you elaborate on that? Would it have a special meaning elsewhere? Why would it need a special meaning in the CDATA section? I thought CDATA sections were there when you wanted the parser to ignore everything in the secton and just pass the text through.
 

Roland Eriksson

Usenet Archive
Joined
Nov 24, 2004
Messages
3
Reaction score
0
...I don't understand your point about the ampersand not having a special meaning in the CDATA section ... Would it have a special meaning elsewhere?

Yes; in a PCDATA section (e.g. inside "normal" marked up content) the ampersand does have a special meaning, it signals to the parser that "here is a possible start of an entity, or a numeric character, reference".
Why would it need a special meaning in the CDATA section?

It does not "need" to have a special meaning and, per definition of CDATA, it _can_not_ have a special meaning in CDATA.
I thought CDATA sections were there when you wanted the parser to ignore everything in the section and just pass the text through.

Yep, that's about it.
 

David Carlisle

Usenet Archive
Joined
Jan 5, 2000
Messages
609
Reaction score
0
Roland's pretty much answered this already but just to be explict.

the point I was making was that you can't have character 1 in XML 1 as it's a banned control character, but in XML 1.1 (if your application supports it, which most don't yet) you can not have the literal control character but you can have " & # 1 ; " (without the spaces) to refer to that character which will then appear as the character with unicode number 1 if you look at the document using and API. DOM, SAX, XPath etc.

However the error message in the original posting refered to a CDATA section but you can not refer to character 1 in a CDATA section even in XML 1.1 as in:

"< [ C D A T A & # 1 ; ] ] > "

The & does not start a character reference as it is no longer special, it just starts itself so the above (again without the spaces) is the equvalent to

"& a m p ; # 1 ; "

David

(Spaces added as some (bad) newsreaders/mailreaders are confused by character references and try to interpret them even in a plain text message)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
548,208
Messages
3,104,802
Members
249,594
Latest member
henrywalsh

Latest Threads

Top