RE: absolute/relative ref and model-ref 'inheritance'

Ryan Tomayko wrote:

>If you wish, I would be happy to make specific editorial suggestions for
>each place in the specification that I see possibility for ambiguity on
this
>matter.

I'll take you up on that. Please make some specific suggestions, and mail to
www-forms-editor@w3.org.

One gotcha:

>I believe the
>model for any form control should be determinable by evaluating the XPath
>expression "ancestor::*/@model".

When you say this, you're talking about applying this theoretical XPath
expression to the containing document (and not instance data), right?

As long as that's the case, and if the produced nodeset is size > 1 you
use only the first node, that looks like a good rule.

And if that expression produces an empty node-set, then either:
1) you have only one model in your containing document, and everything
is OK (defaulting to the one-and-only model present), or
2) you nave more than one model, and your form is in error

Thanks!

.micah


-----Original Message-----
From: Tomayko, Ryan [mailto:Ryan_Tomayko@stercomm.com]
Sent: Monday, August 26, 2002 11:58 AM
To: www-forms@w3.org
Subject: RE: absolute/relative ref and model-ref 'inheritance'



Micah,

On the topic of model inheritance, I would like to suggest that this be made
more clear in the draft. I agree with your answer completely (and have
implemented as such) but the draft is not explicit. 

From just section 7.3 "Evaluation Context", it makes perfect sense: the
model for children elements is inherited from ancestor elements just like
the context node. That is intuitive and follows a common system used by
namespaces and XPath context nodes (i.e. context information is inherited
from ancestors). 

However, under 3.2.3 "Single Node Binding Attributes" documentation on the
model attribute states:

"
model attribute
Optional when a containing document contains only one XForms Model,
_otherwise required_, except when the bind attri<snip>."

This seems silly. If the model is inherited along with the context node, why
do I have to specify a model for each form control? 

The previous revision of the recommendation stated that the first model (in
document order) would be used if no model attribute was explicitly
specified. That is also flawed, IMO. The model for any form control should
be obvious based on the context node. 

Even in the absence of a context node (which is impossible), I believe the
model for any form control should be determinable by evaluating the XPath
expression "ancestor::*/@model". The only time a model attribute should be
required is when you want to switch to a model other than that which
contains the context node. 

If you wish, I would be happy to make specific editorial suggestions for
each place in the specification that I see possibility for ambiguity on this
matter.

Thanks,

- Ryan Tomayko

Sterling Commerce


-----Original Message-----
From: Micah Dubinko [mailto:MDubinko@cardiff.com] 
Sent: Monday, August 26, 2002 1:04 PM
To: 'Jérôme Nègre'; Kurt George Gjerde; www-forms@w3.org
Subject: RE: absolute/relative ref and model-ref 'inheritance'



Hi Kurt,

-1-

As Jérôme pointed out, this is an invalid XForms Model by the latest draft.
You could either assemble a single-rooted instance, or have two instances.

<model>
  <instance id="project">
    <name>...</name>
  </instance>

  <instance id="person">
    <name>...</name>
  </instance>
</model>
Then you could skip the whole <group> in the UI (unless you wanted it for
namespace defaulting), and write:

<input ref="instance('project')">
  <label>Project name</label>
</input>
and
<input ref="instance('person')">
  <label>Person name</label>
</input>

(Note that this example, like your original, cheats on namespaces. Normally
the XForms elements and the instance elements would be in different
namespaces)

-2-

An XPath context node is by necessity in a certain 'document'. So, yes,
'fishpond'.

-3-

Each model keeps track of its context node.

<group model="mod-pond">
is really no different than
<group model="mod-pond" ref=".">

So this example would also work as you expect, pointing to /size/depth for
the 2nd <input> control.

Thanks!
.micah

-----Original Message-----
From: Kurt George Gjerde [mailto:kurt.gjerde@intermedia.uib.no]
Sent: Monday, August 26, 2002 7:16 AM
To: www-forms@w3.org
Subject: absolute/relative ref and model-ref 'inheritance'

Hi,

A few questions about absolute/relative xpaths in @ref,
and about model reference "inheritance".


-1- ref

Take this form:

  <model>
    <instance>
      <project>
        <name>XForms 1.0</name>
      </project>
      <person>
        <name>Janet</name>
      </person>
    </instance>
  </model>
  ...
  <group ref="project">
    <input ref="name">
      <label>Project name</label>
    </input>
    <input ref="/person/name">
      <label>Person name</label>
    </input>
  </group>

I assume that

  'Project name' will be "XForms 1.0"
  (ref 'project' + relative ref 'name' = /project/name)

  'Person name' will be "Janet"
  (absolute ref = /person/name).

Correct? This seems logical to me (see 9.1.1, also quoted below) but I've
seen implementations rendering the second input's ref as
/project/person/name (or /project//person/name!) (ignoring the initial slash
in the @ref).


-2- model

About the @model attribute the (new) WD says (3.2.3): "required, except when
the bind attribute is present".

The group UI element can take single node binding attributes; WD says
(9.1.1): "The binding expression is *solely* for the purpose of authoring
convenience; it allows controls appearing within element 'group' to use
relative XPath expressions." Doesn't mention model, and model isn't xpath...

Now, are model references 'inherited' down to child element controls? Or do
they have to be explicitly set for each and every control?

  <model id="city"/>
  <model id="fishpond"/>

  <group model="fishpond">
    <input ref="size"/>
  </group>

Would this be 'size' in the 'fishpond' model or in the default model
('city')? The former I hope.


-3- both

If it's the size of the fishpond...

Take the following form:

  <model id="mod-ocean">
    <instance>
      <size>
        <width>vast</width>
      </size>
    </instance>
  </model>

  <model id="mod-pond">
    <instance>
      <size>
        <depth>200mm</depth>
      </size>
      <depth/>
    </instance>
  </model>

  <group ref="size">

    <input ref="width">
      <label>Ocean width</label>
    </input>

    <group model="mod-pond">
      <input ref="depth">
        <label>Pond depth</label>
      </input>
    </group>

  </group>

Would the @ref in the second input ('pond depth'; in model mod-pond) be
relative to the @ref in the top group element? Would it be
{mod-pond}/size/depth or just {mod-pond}/depth?

I assume (and hope) the former is correct, and that this is just a weird
example (you get what you ask for).



Very grateful for any input,
-Kurt.
__________
kurt george gjerde <kurt.gjerde@intermedia.uib.no>
intermedia uib, university of bergen

Received on Monday, 26 August 2002 17:40:59 UTC