W3C home > Mailing lists > Public > www-forms@w3.org > July 2004

RE: Setting attribute values in xf:repeat

From: Mark Birbeck <mark.birbeck@x-port.net>
Date: Tue, 27 Jul 2004 22:01:14 +0100
To: "'Robin Berjon'" <robin.berjon@expway.fr>
Cc: <www-forms@w3.org>, "'Jon Ferraiolo'" <jon.ferraiolo@adobe.com>
Message-ID: <000301c4741c$db0e4bb0$0a01a8c0@W100>
Hi Robin,

[I assume that Jon is CC'd by you since your questions are SVG/sXBL related,
so I've also CC'd him.]

> was my question dumb to the point that no one even wanted to consider
> answering it? :)

I can't speak for others on whether the question was 'dumb' ;), but for me
it was very pertinent - it just happens that I don't recall seeing it first
time round!

Anyway, the first point to make is that the reason there is no reference to
attribute value templates is pretty straightforward - they are not supported
in XForms. That's disappointing for me too, and the main reason I like them
is for exactly the use cases you are describing - to allow the XForms model
to drive SVG charts and such like. There are also other pretty good uses for
them in VoiceXML and so on.

> I know that using sXBL makes the problem go away, but here we are
> considering an implementation in a mobile device, and sXBL is 
> currently 
> ruled out.

That's a shame - I think XBL is crucial to getting the most out of the
combination of XForms and other mark-up languages, in particular SVG. (sXBL
less so - but that's another story.) We've implemented a fuller version of
XBL than sXBL in formsPlayer, and we use it to define pretty much everything
now, from the widgets through to extension XPath functions ... even
customised submission serialisations.

It's particularly good for custom controls though, because it combines both
a templating mechanism with the ability to define properties, methods and
events on an object. In particular I like the way it allows you to define
the behaviour of an 'abstract' control, which can in turn be skinned as
something more specific. For example, you can define a range control that
contains nothing but 'add one', 'subtract one', etc., and then you can
inherit from that with specific stuff for, say, an SVG thermometer. The
thermometer doesn't need to know anything about 'rangeness' or how to talk
to the XForms model - that's all nicely compartmentalised in the base XBL

Of course, I understand that this may not be completely appropriate for all
mobile platforms, but it does give very large productivity benefits if you
can squeeze it in.

> Without the ability to set attributes thusly, mixing XForms
> and SVG is 
> only marginally useful in the absence of yet another spec to 
> bridge the 
> two. We would certainly have to drop plans to support it, 
> which I would 
> be quite sorry to have to do.

Personally, I'm not convinced there's *any* use to mixing the two in the
same document (of course you'll notice that I wrote that on an XForms list
and not an SVG one ;)) since they operate at such different levels of
abstraction. An XForms document says "ask the user for a number between one
and ten. If they enter an invalid value, tell them to try again, and once
they have a correct value, send it to server 'X'". An SVG document says,
"draw a line from position 10, 10 to position 3,7 and colour it red with a
Gaussian filter applied to the first thingy".

Take a look at any 'application' built using SVG and it's just as convoluted
as traditional HTML+JavaScript, since to do anything useful requires loads
of script - whether retrieving data from a web service, validating a user's
input, whatever.

I feel a much better model is to generate 'clean' XForms documents, and
reserve SVG for the UI side (custom widgets). Just as XForms 1.0 defines
that a calendar control is rendered if the schema type of the bound data is
xsd:date, so we should be able to say that if the underlying type is of
myschema:temperature, then render an SVG thermometer widget. This is neatly
specified with XBL, and is in fact how we have implemented things in
formsPlayer 2.0. The example you give of circles being repeated is - as you
rightly say - *very* easy inside a custom control defined in XBL.

Obviously this is all pretty new, and probably quite controversial, but our
experience so far has shown that it makes for a very clean separation, and
so for more manageable development. It's not that surprising that it works
better though - after all, XForms is a data language with *abstract*
controls, whilst SVG is a very *specific* UI language (specific in the sense
that it is visual only, vector-based, and so on). The latter is ideal for
providing *concrete* implementations of the XForms widgets, but that doesn't
mean they should be in the same document! (For my two-penneth, the current
trend in the SVG-world to keep adding features to SVG to make it more like
an application language is not going to work. Of course I wrote that on a
non-SVG list, too.)

Anyway, enough future-speak - we'll be making a beta of fP 2.0 available any
time now, so that people can get first hand experience of this type of
architecture, and then hopefully we can get some discussion going between
the XForms world and the SVG one, based on real examples.



Mark Birbeck
x-port.net Ltd.

e: Mark.Birbeck@x-port.net
t: +44 (0) 20 7689 9232
w: http://www.formsPlayer.com/

Download our XForms processor from

> Thanks for any input,
> ===
> Hi,
> I seem to either be missing something, or have found some
> inconvenience, 
> with xf:repeat (I hope the former obviously).
> In a nutshell, I need to produce some SVG from inside an
> xf:repeat in a 
> manner similar to how one might produce, say, an XHTML table, 
> but with 
> spacial rendering. To express it in a way that the XSLT user 
> should find 
> obvious:
>    <xf:repeat nodeset='/foo:bar/foo:stuff'>
>      <svg:circle r='5' cx='{@x}' cy='{@y}'/>
>    </xf:repeat>
> Now I know that XForms isn't XSLT, but the ability to do the
> above would 
> be dead useful for forms that don't have "conventional" presentations 
> and may be using, for instance drag an drop of little circles 
> as a way 
> to modify instance data. But I haven't found any mention of attribute 
> value templates as they are called in XSLT. I looked at 
> xf:output to see 
> if it could route its information to an attribute, and at 
> xf:setvalue to 
> see if it could somehow apply to repeat templates, but have 
> so far not 
> found anything.
> Am I missing something obvious?
> ===
> --
> Robin Berjon
Received on Tuesday, 27 July 2004 17:02:59 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:36:13 UTC