W3C home > Mailing lists > Public > public-xformsusers@w3.org > December 2016

Re: Evaluation context

From: Erik Bruchez <ebruchez@orbeon.com>
Date: Wed, 21 Dec 2016 11:31:03 -0800
Message-ID: <CAAc0PEUfkbCtsReApcLdx+LKDU6yumEDaTicedeE_2kp6xaqQg@mail.gmail.com>
To: Steven Pemberton <steven.pemberton@cwi.nl>
Cc: XForms <public-xformsusers@w3.org>
>
> When there is a single-node binding, the context item always has a size of
> 1 (or may be missing). This is a bit tricky. What does this do:
>
> <xf:repeat ref="1 to 10">
>   <xf:output value="position"/>
> </xf:repeat>
>
> vs.
>
> <xf:repeat ref="1 to 10">
>   <xf:group ref=".">
>     <xf:output value="position"/>
>   </group>
> </xf:repeat>
>
>
> They both do the same thing, since a repeat object is a single item
> binding:
>
> "a repeat object consisting of an implicitly generated group element that
> binds to the item, and containing a copy of the template."
>
> I thought about this, and I can think of no place except for bind where a
> sequence binding is nested directly within a sequence binding.
>

They do the same thing as far as the binding item proper, but what about
the XPath context position and size? For sequence bindings, we now say:

    "a size of the size of the sequence, and a position of the position of
the generated item in the sequence"

So should I expect `position()` to work (as in showing "1", "2", etc.) here:

<xf:repeat ref="1 to 10">
  <xf:output value="position()"/>
</xf:repeat>

And in the second case, does the single-item binding (in addition to the
implicit group of the repeat) reset the position() and last()?

<xf:repeat ref="1 to 10">
  <xf:group ref=".">
    <xf:output value="position()"/>
  </group>
</xf:repeat>

In other words, are position() and last() inherited when there is no
sequence-binding?

In our implementation, I think that single-item bindings reset to position
= 1 and size = 1.

-Erik
Received on Wednesday, 21 December 2016 19:31:57 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:37:47 UTC