18

Simple question, I'm asking just to make sure.

A Google sitemap generator generated a sitemap.txt fle with links written like this:

http://www.domain.com/category.htm?name=some-name&cat_id=8

is it correct to use the & in these links in place of the & or it's just an error made by the sitemap generator?

Thanks.

5 Answers 5

11

That is correct. It is the HTML entity for an ampersand (&) and is the proper character representation of it in a properly encoded URL. Ampersands (&) and well as < and > are special characters in XML and HTML and need to be displayed using their special character entities.

4
  • Are you sure all ampersands have to be entity-escaped? I thought that was only for those separating parameters in query strings. I've always escaped ampersands within file or folder names or in the parameters themselves using percent-encoding (%26): e.g. http://foo/a%26r.php?foo=1&amp;genre=r%26b Commented Oct 21, 2010 at 19:37
  • I'm not sure about percent-encoding is valid or not so I can't say for sure.
    – John Conde
    Commented Oct 21, 2010 at 19:48
  • @Lèse - because it's an XML document it has to be escaped, unless you use a CDATA node (just noticed that bdadam said the same thing, but much earlier than me) Commented Oct 26, 2010 at 20:30
  • > don't strictly need to be entity encoded in XML.
    – MrWhite
    Commented Feb 20, 2014 at 12:57
6

Your Sitemap file must be UTF-8 encoded (you can generally do this when you save the file). As with all XML files, any data values (including URLs) must use entity escape codes for the characters.

This may help out, http://sitemaps.org/protocol.php

1
  • Unfortunately, this link is now dead.
    – mtness
    Commented Nov 14, 2018 at 12:42
2

You can also convince yourself by checking

You can't really argue against the official xml sitemaps protocol page :)

2

Google rejects the sitemap as broken if it has a & character in an URL. It accepts it when you replace & with &amp;

BUT: if you later check the list of crawling errors in the Google webmasters tool, it will report this URL of the sitemap file as broken, because it contains &amp; instead of &.

Thus the correct solution is to change the URL such that it does not contain &. Or report this as bug to Google.

1

URL-Encoding and XML entity encoding are not the same things. You need URL-Encoding to replace special characters in URLs, such as & which can only be used for the separation of query parameters. XML entity encoding is for encoding special characters in XML (also XHTML). This means, if you have a URL in an XML (or XHTML) file, and this URL includes some & characters, you have to entity encode it to &amp;. So in a sitemap.xml you will have urls like in the question from Marco Demaio.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.