- From: Dan Connolly <connolly@w3.org>
- Date: Fri, 08 Apr 2005 17:09:07 -0500
- To: public-qt-comments@w3.org
Regarding...
"Generally, $escape-reserved should be set to true when escaping a
string that is to form a single part of a URI, and to false when
escaping an entire URI or URI reference."
http://www.w3.org/TR/2005/WD-xpath-functions-20050404/#func-escape-uri
Indeed, those are the two relevant tasks. I might prefer
separate functions, as the tasks are quite unrelated.
In any case, the exception for the % character makes this
function unsuitable for the task of "form[ing] a single part of a URI".
As specified, fn:escape-uri("gross %each") returns "gross%20%each"
but that doesn't actually encode the string "gross %each" into
part of a URI such that the party that encoded it can decode it
again. In order to be useful, it needs to return
'gross%20%25each' . It needs to be invertible.
i.e. XQuery should follow all the other programming languages
out there, such as
- python
http://docs.python.org/lib/module-urllib.html
>>> urllib.quote("gross %each")
'gross%20%25each'
- perl
perl -e 'use URI::Escape; print uri_escape("gross %each"), "\n"'
gross%20%25each
http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=URI::Escape
- javascript
http://www.javascripter.net/faq/escape.htm
I can't find the standard library functions for Java and C#
with a few minutes of googling, but I'll bet they work likewise.
p.s. yes, this is essentially the same comment I made back in 2003.
http://lists.w3.org/Archives/Public/uri/2003Mar/0027.html
--
Dan Connolly, W3C http://www.w3.org/People/Connolly/
D3C2 887B 0F92 6005 C541 0875 0F91 96DE 6E52 C29E
Received on Friday, 8 April 2005 22:09:09 UTC