- From: <AndrewWatt2001@aol.com>
- Date: Mon, 18 Nov 2002 15:06:17 EST
- To: Ryan_Tomayko@stercomm.com
- CC: www-forms-editor@w3.org, xforms@yahoogroups.com, www-forms@w3.org
- Message-ID: <53.1f714267.2b0aa239@aol.com>
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 > DOM > 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? Regards Andrew Watt
Received on Monday, 18 November 2002 15:07:13 UTC