Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   XML (http://www.velocityreviews.com/forums/f32-xml.html)
-   -   entities in attribute values (http://www.velocityreviews.com/forums/t662129-entities-in-attribute-values.html)

luca 01-12-2009 04:15 PM

entities in attribute values
 
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

Martin Honnen 01-12-2009 06:06 PM

Re: entities in attribute values
 
luca wrote:
> 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'.


--

Martin Honnen
http://JavaScript.FAQTs.com/

luca 01-12-2009 06:31 PM

Re: entities in attribute values
 
Martin Honnen wrote:
>
> 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

luca 01-12-2009 06:49 PM

Re: entities in attribute values
 
luca wrote:
> 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


All times are GMT. The time now is 05:15 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.