control structure
repeat over reversed? current elements (of element-expression)? as alias local-scope again
repeat over current elements
is a form of the repeat over
loop used to iterate over
opened elements and access information about them. The default behavior of a repeat over current
elements
loop is to start with the element that was opened first and iterate towards the most recently
opened element, processing each open element in turn. Specifying reverse
reverses the direction of the
loop: the loop therefore starts with the most recently opened element, and ends with the outermost element.
Within a repeat over current elements
loop, the alias provides a way to access the
element selected in the current iteration. A reference to the alias must be prefixed by the herald
current element
.
If element-expression is specified and identifies an open element, the loop is restricted to the
range beginning with the outermost element, and ending with the element identified by element-expression; specifying reverse
will reverse the direction of the loop,
but the set of iterated elements remains restricted to the same range as if reverse
had not been
specified.
If there are no open elements, or element-expression is specified and identifies an element that is not open, the loop is not executed: it effectively identifies an empty set of opened elements.
#item
is always 1
on the first iteration, and equal to the number of opened elements on
the last iteration, even when reversed
is specified. #item
never decrements.
All text written to a markup parser within a repeat over current elements
loop is buffered: none
of the text is actually passed to the markup parser until after the end of the repeat over current
elements
loop.
The %q
format item, references to attributes
, and element tests are not affected by a
repeat over current
elements
loop. These apply to the same element within the loop as they would outside the loop. In other
words, the use of %q
in a repeat over current elements
loop does not give the name of the
element selected by the current iteration, but rather that of the most recently opened element.
current element
alias can be used in several contexts within the repeat over current
elements
loop:
It is possible to use a name as both an alias and a real, unquoted element name. If such a name is
used in any context other than immediately following the herald current element
, it refers to the
element with that name and not to the alias. However, the use of unquoted element names in OmniMark
programs is discouraged.
This code sample will close all of the elements which are currently open. Note, however, that because input to
the parser is buffered while the loop is running, the elements will not actually be closed until the
repeat over current elements
loop is complete.
repeat over reversed current elements as e output "</" output name of current element e output ">" again
The functionality of current elements
is limited. Users are encouraged to use elements
of
instead.