Re: [svg-developers] Re: some discussion of SVG 1.2

Jim Ley wrote:
> "Robin Berjon" <robin.berjon@expway.fr>
>>Of course not. Presumably, prefixes in the XPath expressions would be
>>mapped to  namespaces based on the current namespace context, as
>>it is in XSLT.
> 
> and if that namespace context changed?

Then the meaning of the enclosed XPath would change as well. This is the pandora 
box of QNames in content. However if other languages have survived it, why not SVG?

> My problem with using the
> prefix, is that the prefix is supposed to disappear once you've parsed
> the XML, which would mean your
> (//rect[@ex:type='stepBox']).mouseover
> would have to be expanded to:
> (//rect[@urn:moo:type='stepBox']).mouseover
> on parsing, which means why bother with the extra confusing layer - why
> not just work with the namespace direct?

Well we have the chance of having that information available, so why not use it? 
Your example seems fine because you use the "urn:moo" namespace, which is simple 
enough. Replace that with 
"http://xmlns.mycoolcompany.com/SVG/extension/rect/1.0/" and you get:

(//rect[@http://xmlns.mycoolcompany.com/SVG/extension/rect/1.0/:type='stepBox']).mouseover

which is starting to be a little less readable, provided we forget the fact that 
that isn't XPath syntax at all. Not that making it comply with the XPath syntax 
is hard:

(//rect[@*[namespace-uri()="http://xmlns.mycoolcompany.com/SVG/extension/rect/1.0/" 
and local-name()="type"]='stepBox']).mouseover

(Not sure that's completely correct, but the general idea's there). 
Alternatively, we could use XPointer's xmlns() scheme, which would yield 
something along the lines of:

(xmlns(ex=http://xmlns.mycoolcompany.com/SVG/extension/rect/1.0/)//rect[@ex:type='stepBox']).mouseover

which isn't of paramount clarity either. If you picture any of the above with 
several uses of the namespace, only the last one doesn't double in size and 
unreadability with each occurence.

My reasoning is thus that if we have XPath we need namespaces, and if we need 
namespaces we might as well use the context we have: it's more readable and less 
error-prone. I'm not very fond of the QNameInContentKludge, but I must say that 
I haven't seen many nice alternatives.

-- 
Robin Berjon <robin.berjon@expway.fr>
Research Engineer, Expway
7FC0 6F5F D864 EFB8 08CE  8E74 58E6 D5DB 4889 2488

Received on Monday, 18 November 2002 12:42:31 UTC