When I tried to validate the code for http://www.hyips.es (one of my freelance projects) the validator kept complaining:
cannot generate system identifier for general entity langpair. |
This error is caused by the validator parsing the code inside of a <script> tag. Below are the lines which were producing the error (related to a function which translates the page from spanish to english using google translator):
<script type="text/javascript">
function es2eng(){
location.href = "http://translate.google.com/translate?u=" + this.location.href + "&langpair=es|en&h1=es&ie=UTF-8";
}
</script>
<a href="#" onclick="es2eng();"><img style="border: medium none; margin:1px;" src="/images/banderas/england-flag.gif" alt="translate to english" height="20" width="30" /></a> |
After reading a lot of confussing comments (like Try to change ‘&’ to ‘&’ or to ‘%26′), and just when I was about to define the function in an external js file (not a big fan of this, because the function was only one line long…), I came to this revealing post in webmasterworld.com.
The problem can be solved as easy as this: change
<script type="text/javascript"> your script is here </script> |
To:
<script type="text/javascript"> // <![CDATA[ your script is here // ]]> </script> |
The change stops W3C’s validator from parsing the code inside the script tags, therefore the error disappears!
