[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Entity replacements within attributes for CDATA
Cabbar Duzayak wrote: > I have an XML which is similar to: > > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE TestData [<!ENTITY var1 > '<![CDATA[testvalue]]>'>]> > <TestData> > <Holder> > <MyText > target="http://www.yahoo.com?aa=&var1;">Text > Source</MyText> > </Holder> > </TestData> > > When I try to parse this, I am getting an exception: > '<' cannot appear in attribute value. > > Looks like parser replaces &var1; with > "<![CDATA[testvalue]]>", As expected. and since attribute values > can not have "<" in them, this xml can not be parsed. > And the problem goes away if I replace the entity > definition with: > > <!DOCTYPE TestData [<!ENTITY var1 'testvalue'>]> > > However, I have to use CDATA here, But you **cannot** use a CDATA section in an attribute value. A CDATA section, legal only in element content, simply signals to the processor that characters otherwise considered to be markup are to be treated as text. A CDATA section does not do any escaping. An entity, however, is a substitution macro, and effectively sticks characters into the source. Wrapping them with a CDATA section doe snot escape anything. >cause I don't know > what the value of "var1" can be at runtime, and it > might contain quote characters or any other special > characters and it will be hard to deal with various > cases if I don't use CDATA... Too bad, you have to escape the data before the processor sees it. Cheers, Tom P
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|