- From: COUTHURES Alain <alain.couthures@agencexml.com>
- Date: Sat, 24 Apr 2010 10:01:27 +0200
- To: John Boyer <boyerj@ca.ibm.com>
- CC: Simon Gijsen <emc-community-network@emc.com>, public-forms@w3.org, "www-forms@w3.org" <www-forms@w3.org>
- Message-ID: <4BD2A557.1020007@agencexml.com>
John,
An xslt() function wouldn't be the only situation to be concerned with
ancestor dependencies.
Here is a very basic test case:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xf="http://www.w3.org/2002/xforms">
<head>
<title>Hello to the Bear Family</title>
<xf:model id="mod">
<xf:instance>
<data xmlns="">
<PersonGivenName>Teddy</PersonGivenName>
<PersonName>Bear</PersonName>
</data>
</xf:instance>
</xf:model>
</head>
<body>
<xf:input ref="PersonGivenName" incremental="true">
<xf:label>Please enter your first name: </xf:label>
</xf:input>
<br />
<xf:output value=".">
<xf:label>Hello </xf:label>
</xf:output>
</body>
</html>
As you can see, "Hello Teddy Bear" is expected and this should change to
"Hello Ma Bear" when typing "Ma" instead of "Teddy".
I tested it against Mozilla Extension, Formula EMC and XSLTForms.
Formula EMC is the only one succeeding but I don't know if Simon has
implemented a dependency engine ;-)
What do you think?
Thanks!
-Alain
COUTHURES Alain a écrit :
> John,
>
> Well, at least for XSLTForms, there is an appreciable difference in
> speed because, with an action, the text result has to be parsed and
> stored in specific DOM-like objects then serialized in Javascript.
> It's also much easier for developers not to have to write actions on
> events.
>
> Wouldn't it be more interesting to consider dependencies with
> ancestors: if a node has changed, all its ancestors have too??
>
> Thanks!
>
> -Alain
>
> John Boyer a écrit :
>>
>> Hi Alain,
>>
>> Agreed the ability to call the transform as a function is
>> syntactically easier. Not sure why there is any appreciable
>> difference in speed.
>>
>> Regarding dependencies, though, yes I think you are missing where the
>> dependencies are coming from.
>> The output of the xslt might be a string, but the input to be
>> transformed would be the *root* of some data node. The function
>> implicitly consumes all nodes in the subtree, but the parameter
>> refers only to the root node, so the XPath containing xslt() would
>> not have any dependencies on all the nodes.
>>
>> If you call the xslt() function someplace that is ephemeral, like a
>> submission ref, then it's OK because the result is obtained at a
>> point in time, used and then discarded. There is no long term
>> tracking of dependencies on the XPath. But an XPath in a UI binding,
>> for example, is different. The XForms processor is expected to make
>> the UI reflect the state of the model. So any change within the
>> entire data subtree should reasonably cause your <xf:output
>> value="xslt(data/root)"/> to be updated by running the transform
>> again. And when that doesn't happen, it looks like a language defect.
>>
>> Cheers,
>> John M. Boyer, Ph.D.
>> STSM, Lotus Forms
>> Workplace, Portal and Collaboration Software
>> IBM Victoria Software Lab
>> E-Mail: boyerj@ca.ibm.com
>>
>> Blog: http://www.ibm.com/developerworks/blogs/page/JohnBoyer
>> Blog RSS feed:
>> http://www.ibm.com/developerworks/blogs/rss/JohnBoyer?flavor=rssdw
Received on Saturday, 24 April 2010 08:00:33 UTC