GBa
GBa

Reputation: 18387

How do i write the literal "]]>" inside a CDATA section without it ending the section

Pretty simple question, I'm writing an XML document and i'm not sure how to write "]]>" without it being seen as the end of the section.

Upvotes: 10

Views: 1801

Answers (3)

Henrik Paul
Henrik Paul

Reputation: 67703

I think

<![CDATA[]]]]><![CDATA[>]]>

is the way to go.

That is:

  • one CDATA section containing the literal string ]] (<![CDATA[]]]]>)
  • one CDATA section containing the literal string > (<![CDATA[>]]>)

In practice, there would probably be text before the first ]] and/or after the >

See more at http://en.wikipedia.org/wiki/CDATA#Uses_of_CDATA_sections

Upvotes: 9

Joachim Sauer
Joachim Sauer

Reputation: 308001

You can't. CDATA doesn't provide any way to escape characters, so those characters will always represent the end of the CDATA section. You can, however, let them end the CDATA section, add "]]&gt;" and start a new one with "<![CDATA[".

This way the String "]]>]]&gt;<![CDATA[" has almost the effect of being an escape for "`]]>" in a CDATA section.

Upvotes: 5

Greg Hewgill
Greg Hewgill

Reputation: 992707

You can do it like this:

]]>]]&gt;<![CDATA[

This ends up breaking the CDATA section in two parts, but it's what you have to do.

Upvotes: 19

Related Questions