|
|||||
Related Syntax | ||
operator |
ancestor is |
Return type: Switch
Returns: Returns true if the named element occurs in the element stack before the current or specified element, otherwise false.
Syntax
ancestor ancestry-qualifier (is | isnt)namespace-modifier? element-name
An element test. An element can be opened more than once, so its "name" can occur more than once in a set of opened elements. As a consequence, a specific element is typically identified by a "relationship" to another element, as well as or instead of by its name.
ancestor
refers to any element containing the specified element at any level. This is a very broad parameter, so care should be taken in its use.
The test returns true if the element indicated has any ancestor with the specified element name, and false otherwise. Replacing is
with isnt
will reverse these results.
If no element qualifiers are present, the test always starts searching for ancestors starting with the parent of the current element.
Instead of specifying only a single element name, the test allows the programmer to specify a parenthesized list of element names separated by or
(or |
). The test succeeds if the reference element is identified by any of the names in this element name list.
In OmniMark 8, you can specify the name dynamically by using the identity operator (~
) followed by a string expression:
; Check for elements with an ancestor of the same name element #implied when ancestor is ~(name of element) suppress
Previously, this rule would have to be coded as:
define switch function ancestor-has-same-name as repeat over current elements as e return True when name of current element e = name of element and not #last again return False element #implied when ancestor-has-same-name suppress
Related Syntax element parent is preparent is |
Copyright © Stilo International plc, 1988-2008.