operator
elements of element-expression
Operator elements of
returns a shelf of all markup-element-event
regions that are open around
the argument event. The first item of the resulting shelf is the root element of the document, and the lastmost
contains the argument event. The shelf cannot be modified, and its items are not keyed.
You can use elements of
in all the same ways you use other read-only, unkeyed shelves. You can get the
number of
the elements, iterate over them with a repeat over
loop, copy
the
shelf, index it with an item number, or pass it to a function as a read-only
argument:
define string source function full-path (read-only markup-element-event elements) as repeat over elements as e output "/" || name of e again element "row" when full-path (elements of ancestor "table") = "/document/appendix/table" suppress
If you apply elements of
to an event produced by create-element-event
, it will return a
single-item shelf with the same event. It is more useful to apply elements of
to an event created by a
markup parser. Such an event can be captured using #current-markup-event
or an element expression like
ancestor
in the above example. Events are immutable: the elements of
a parsed event will always
be the same, both during the parse and after the parse is complete.
The older version of this operator, current elements
, is syntactically more constrained and its use
is not recommended. Most uses of current elements of
can be simply replaced by elements of
,
and uses of current elements
not followed by of
, by elements of element
.
The only exception is repeat over current elements
. If you replace current
elements
by elements
in this case, you will also need to remove all the current
element
heralds preceding the shelf alias inside the loop body.