entities in attribute values

L

luca

Hi, I just figured that XML is touchy about using entities in attribute
value even for super-simple XML files with no DTD:

<elem name="entity_euro" value="&euro;"/>

Caused by: org.xml.sax.SAXParseException: The entity "euro" was
referenced, but
not declared.
at
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1189)


is there a standard way to escape entities in XML?

Thanks
 
M

Martin Honnen

luca said:
Hi, I just figured that XML is touchy about using entities in attribute
value even for super-simple XML files with no DTD:

<elem name="entity_euro" value="&euro;"/>

Caused by: org.xml.sax.SAXParseException: The entity "euro" was
referenced, but
not declared.
at
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1189)



is there a standard way to escape entities in XML?

You need a DTD that declares the entity named 'euro'.
Or you need to use a numeric character reference e.g.


And that has nothing to do with whether you use the entity reference in
an attribute or in an element, that does not matter. You need to declare
any entity you want to reference, with the exception of 'lt', 'gt',
'quot', 'apos', 'amp'.
 
L

luca

Martin said:
You need a DTD that declares the entity named 'euro'.
Or you need to use a numeric character reference e.g.


And that has nothing to do with whether you use the entity reference in
an attribute or in an element, that does not matter. You need to declare
any entity you want to reference, with the exception of 'lt', 'gt',
'quot', 'apos', 'amp'.

so, here is my problem. I use this XML file simply to hold configuration info.
One of the strings I need to store in the config file is "&euro;" which,
unfortunately, happens to be an XML entity and have special meaning for XML and
XML parsers.

I tried:

<elem name="entity_euro" value="<![CDATA[&euro;]]>"/>

but it does not work.

I can work this around outside of XML by using a different expression and having
Java re-build the entity string:

<elem name="entity_euro" value="amp_euro;"/>

before I do it, though, I would like to hear whether there is a better (and more
elegant!) way, because my heart cries when I see XML suck so bad. :)

Luca
 
L

luca

luca said:
Hi, I just figured that XML is touchy about using entities in attribute
value even for super-simple XML files with no DTD:

<elem name="entity_euro" value="&euro;"/>

Caused by: org.xml.sax.SAXParseException: The entity "euro" was
referenced, but
not declared.
at
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1189)



is there a standard way to escape entities in XML?


This did the trick:

<elem name="entity_euro" value="&amp;euro;"/>

Thanks

Luca
 

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
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top