- From: Michael Kay <mike@saxonica.com>
- Date: Thu, 26 Jun 2008 19:10:33 +0100
- To: "'Norman Walsh'" <ndw@nwalsh.com>, <public-xml-processing-model-comments@w3.org>
- Cc: "'XQuery'" <w3c-xml-query-wg@w3.org>
> > The other observation made in discussion was about the
> requirement for
> > the pipeline to be able to generate a query that is then
> executed. ...
>
> I think our spec may be misleading on this point. I had
> imagined that c:query was a wrapper around some well-formed
> XML. So you might write:
>
> <c:query>
> default element namespace="http://www.w3.org/1999/xhtml"
> <html>
> <head>
> <title>Dumb query</title>
> </head>
> <body>
> </body>
> </html>
> </c:query>
>
> Is it really the case that there are queries which aren't
> well-formed XML? And can we just not support them, or are they common?
The thing most likely to make the query non-well-formed XML is an operator:
<, <=, or <<. These can be escaped, of course, but this creates a variant
representation of XQuery that's not necessarily trivial to convert to or
from the standard syntax. (The rule is that < is an operator if it is
outside an element, or if it is within curly braces but not within
quotes...)
I would think it is also quite common for a query not to be
namespace-well-formed, because namespaces can be declared in the query
prolog (or implicitly in the case of well-known namespaces like the XML
Schema ns).
There are exotic queries that are not well-formed XML for other reasons, for
example <a a="{<b b="{<c/>}"/>}"/>, but I think one can decide to disallow
them.
XQuery largely uses entity and character references in a way that is
consistent with XML, but is selective about where they are expanded. For
example, <query>$x = "",""</query> would lose too much information
if the entity expansion is done by an XML parser.
I think XQuery needs a "less trivial embedding" for use with XProc and other
XML-based host languages.
Michael Kay
Saxonica
Received on Thursday, 26 June 2008 18:11:13 UTC