specified attributes (of element-expression)?
specified attributes represents the set of all specified attributes of an element as
a shelf. The name of the attribute is used as the key, and the value of the attribute is stored in the shelf
item value. The type of the shelf and all its items is
specified-attribute, which can always be
converted to a
string as well.
To reference the attributes of a specific element, the element can be qualified in all of the same ways as
attribute references. The
specified attributes shelf doesn't really have a name, so aliases are
used to identify items in the set of attributes. There is no default current item in a set of attributes.
The items of the
specified attributes shelf are indexed in the order in which the attributes
occur in the element's start tag, as opposed to their declaration order provided by the
In the following output action, for example, the value of the first attribute specified in the start
tag is output, no matter where it appears in the order of declarations. This action is an error if no attributes
are specified in the start tag, even if there are declared attributes and they all have default values.
output specified attributes
has key test to the
attributes shelf determines whether an element has
a specified attribute. If it does, the attribute and the shelf item necessarily has a value. Every key present
specified attributes shelf is always also present in the
The number of attributes specified for an element can be determined by applying
number of to
The following example shows how the
of parent element qualifier can be used to refer to a
specified attribute of the parent element, instead of the currently opened element:
This code fragment illustrates the utility of the
specified attributes shelf. When used, it
will output normalized start tags and end tags around the content of the current element, with all specified
attribute values included.
This example can be used as a simple but complete OmniMark program that normalizes an SGML document. In practice, such a program will also need to:
element #implied output "<%q" repeat over specified attributes as a output " " || key of attribute a || "=%"%v(a)%"" again output ">%c" output "</%q>" unless content is (empty | conref)