Hi everyone :)

While playing with Google Web Fonts today http://www.google.com/webfont I
ran into an interesting issue with Tapestry 5.3 (currently running beta 10).
When a possible entity name is encountered by Tapestry within a template
file (TML) even if it resides within an element attribute, it will raise an
exception. For those unfamiliar with Google Web Fonts, it basically
generates a LINK element pointing to a CSS style hosted by Google. The HREF
contains various stuff such as font family and character sets, here's an
example:

<link href="
http://fonts.googleapis.com/css?family=Francois+One&subset=latin,latin-ext";
rel="stylesheet" type="text/css"/>

Now - if you do this, Tapestry will scream:

Failure parsing template classpath:sk/jazd/kniha/components/SiteBorder.tml:
The reference to entity "subset" must end with the ';' delimiter.

This seems like a similar issue to the old JavaScript problem, where an
ampersand within a string will also cause an error. What do you guys think?
Is this to be expected, or is it a bug that should be addressed (i.e. not
check entities within quoted element attributes)?

Of course, as always (well - most of the time) with Tapestry, there's an
easy workaround:

<link href="${googleFontStyle}" rel="stylesheet" type="text/css"/>

and in your code:

public String getGoogleFontStyle()
{
return "
http://fonts.googleapis.com/css?family=Francois+One&subset=latin,latin-ext";;
}

Rado

Reply via email to