- From: Robin Berjon <robin.berjon@expway.fr>
- Date: Wed, 04 Feb 2004 14:19:59 +0100
- To: Cameron McCormack <cam-www-svg@aka.mcc.id.au>
- Cc: www-svg@w3.org
Cameron McCormack wrote:
> Robin Berjon:
>>This is interesting. Is there any reason you didn't use XPath to encode
>>the expressions?
>
> I did use XPath syntax, but in the prototype available on the web site
> at the moment I used functions to get the attributes, as I hadn't found
> an easy way to get expressions like id('r')/@width to get the current
> value of the width constraint, and not just the string value of the
> width attribute.
Yes, sorry, I should have been clearer. I meant XPath paths.
> In my next iteration of the CSVG extensions I have managed to do this,
> however, and the syntax is much nicer. Constrained attributes are
> declared like this:
>
> <rect id="r" x="50" .../>
> <rect x="0" y="0" width="100" height="100">
> <c:constraint attributeName="x" value="id('r')/@x"/>
> </rect>
>
> The second rect has a default x value of 0, and if the browser
> understands the constraint extensions, its x value will track the x
> value of the rect with id 'r'. I've tried to make this new syntax
> parallel the way animation works so that it could be more easily
> integrated into Batik.
This is indeed much nicer, and something that I like very much. I've
toyed with something slightly different in which I stated the constraint
in an attribute with the same local name but in my own namespace, it
would map roughly to:
<rect x="0" y="0" width="100" height="100" c:x='id('r')/@x'/>
but I think your approach is cleaner. In SVG 1.2 RCC and DOM 3 XPath
should allow you to implement that as an RCC extension, have you
considered doing so? Is there anything you see in the current draft that
would prevent you from doing so?
Also, I've been working on a document defining a set of SVG extensions
to XPath which covers some of the functions you list on the site.
Basically it includes things like bbox() but puts them in the SVG
namespace so that those functions are called as svg:bbox() (which in
turn means you need that namespace context). Your version appears to add
a some new types to XPath (eg SVGRect) which is something that I'd
rather avoid as it will not be easy to build as an extension to most
XPath libs (that tend to allow new functions but not new types). In my
approach, something like svg:bbox() would return a node-set containing
the XPath equivalent of <rect x='12' .../> so that it can be used with
any other part of XPath with consistent semantics. You'd access the x as
svg:bbox(.)/@x. If you have thoughts on this they are most welcome, and
if you think there would be value in having a more generally agreed upon
set of SVG functions for XPath I'd be happy to move this closer to the
top of my priority pile.
Of course, as currently specified one cannot add one's own extension
functions to DOM 3 XPath. If you believe it would be useful to be able
to do so, please outline some use cases on this list.
--
Robin Berjon
Received on Wednesday, 4 February 2004 08:20:18 UTC