W3C home > Mailing lists > Public > www-forms@w3.org > November 2002

Re: XForms CR - 7.10.1 Another XPath 1.0 Conformance Question

From: <AndrewWatt2001@aol.com>
Date: Mon, 18 Nov 2002 15:06:17 EST
Message-ID: <53.1f714267.2b0aa239@aol.com>
To: Ryan_Tomayko@stercomm.com
CC: www-forms-editor@w3.org, xforms@yahoogroups.com, www-forms@w3.org
In a message dated 18/11/2002 19:20:11 GMT Standard Time, 
Ryan_Tomayko@stercomm.com writes:

> Andrew,
> I am in no way the authority on this but I can give you one companies
> interpretation on how this should be implemented. 
> There are possibly many separate documents, and/or xpath data models (I'm
> using the two interchangeably) that an XForms Processor maintains. Each
> <xf:instance/> element defines a separate xpath data model. i.e. When an
> XForms Processor comes across an xf:instance, it creates a new xpath data
> model and either a.) loads the xpath data model from the uri specified, or
> b.) loads the xpath data model from XML specified inline. 
> Each data model is held separately and traversal from one data model into
> either the source document, or other instance xpath data models, is
> impossible with the base set of XPath axes and function library. For
> example, assume I have 3 instances (i1, i2, and i3). If I am evaluating the
> XPath expression ".." in i1, I do not get the <xf:instance/> element back 
> as
> a result, I get an error because I'm reaching for a parent that doesn't
> exist. If I evaluate the XPath expression "/" in i3, I get back the root of
> i3, not the root of the source document. In other words, it is impossible 
> to
> go outside of an individual instance data model. It is also impossible to
> access the source document unless it is explicitly loaded into an instance.
> (e.g. <xf:instance src="./this.xfm"/>).
> This is where the instance() function comes into play. It allows me to
> traverse into the root of some other instance's xpath data model, which
> would be absolutely impossible otherwise. So, the instance() is NOT the 
> id()
> function, which seems to be how you've interpreted it.. The instance()
> function is not limited to resolution within the context xpath data model. 
> How the instance() function locates the xpath data model is an
> implementation detail. For example, we use a HashMap to map instance id's 
> to
> DOM Document objects. The Map may contain any number of instance id's to 
> Document mappings. When the instance() xpath function is called, the
> function simply looks up the document in the HashMap and returns it.
> Hope this helps,
> - Ryan
> -----Original Message-----
> From: AndrewWatt2001@aol.com [mailto:AndrewWatt2001@aol.com] 
> Sent: Monday, November 18, 2002 8:25 AM
> To: www-forms@w3.org; www-forms-editor@w3.org; xforms@yahoogroups.com
> Subject: XForms CR - 7.10.1 Another XPath 1.0 Conformance Question
> This question is, for a short time, posted only to the three XForms lists. 
> I
> have other concerns about 7.10.1 which I will post separately.
> It seems to me that the XForms CR may be using the instance() function and 
> its related location paths in a way inconsistent with XPath 1.0.
> I make the point in the assumption that John Boyer's recent email gives an 
> accurate description of the relationship between instance data and the 
> containing document. I am assuming that there is a *copy* of part/all of 
> the
> content of an <xforms:instance> element in a separate XPath data model.
> There are background uncertainties since Micah Dubinko's recent post on 
> XML-Dev is by no means clearly expressing the same meaning as John Boyer's 
> email. Nor has the XForms WG responded to my question regarding the precise 
> meaning of "instance data" and its scope.
> My concern relates to the following syntax in the CR:
> ref="instance('orderform')/shipTo/firstName"
> The instance() function seems to me to reference the id attribute 
> containing
> the value "orderform". As I understand the situation that id attribute only 
> exists in the original/containing document or, more precisely, in the XPath 
> data model which represents it. As far as I understand it a representation
> of 
> that <xforms:instance> and its id attribute do not exist in the *copy* 
> XPath
> data model. Therefore the instance() function in the first location step of 
> the quoted location path is referencing a node in the XPath data model of
> the 
> original/containing document.
> However, again if I am understanding correctly, the two following location 
> steps  reference *the copy* XPath data model (not the XPath data model of
> the 
> original/containing document).
> So we seem to have a single XPath 1.0 location path apparently operating on 
> two separate XPath 1.0 data models.
> To the best of my knowledge that is inconsistent with XPath 1.0.
> Andrew Watt

Hi Ryan,

Thanks for the reply.

With your current understanding of what the spec intends could you provide a 
complete but short sample XForms "form" which your implementation will run 
which uses the instance() function? 

Hopefully discussing an example might help us all refine where our existing 
differences persist.

I agree with you that the implementation is, in a sense, a detail. My point 
is that the XForms CR claims that the approach it takes is compliant with 
XPath 1.0. As you probably realise I have yet to be convinced that that is a 
true claim.

7.10.1 in the CR is not totally clear (at least to me). Do you think it is 
possible to use the instance() function to reference the *original* value of 
a piece of data contained in an <xforms:instance> element? If so, which XPath 
expression could a document author use to achieve that?

As I read the CR the instance() function is intended only to allow access to 
the *copy* instance data which may or may not be the same as the original. Do 
you read it that way too or have I missed something obvious?


Andrew Watt
Received on Monday, 18 November 2002 15:07:12 UTC

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