queries are sensitive, but node names aren't
that's why you have to do 3 queries for "url", "Url", "URL" when doing
//meta[contains(@content, 'url')]
I can confirm that META, CONTENT, A and HREF are case insensitive.
translate should work in XPath 1 whereas lower-case() is an XPath 2.0 function