W3C home > Mailing lists > Public > www-forms@w3.org > April 2010

Dependencies for XPath evaluation

From: COUTHURES Alain <alain.couthures@agencexml.com>
Date: Sat, 24 Apr 2010 10:01:27 +0200
Message-ID: <4BD2A557.1020007@agencexml.com>
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>

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" 
        <title>Hello to the Bear Family</title>
        <xf:model id="mod">
            <data xmlns="">
        <xf:input ref="PersonGivenName" incremental="true">
            <xf:label>Please enter your first name: </xf:label>
        <br />
        <xf:output value=".">
            <xf:label>Hello </xf:label>

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?



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:31 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:38:00 UTC