control structure
using attribute-reference (as alias-name)?
local-scope
You can use using to create an alias for an attribute in the current parsing state. Attributes
available in the current parsing state include the attributes of the current element and the attributes of all
open elements.
Suppose that you are processing an element called section that has a parent called chapter and the
chapter element has an attribute number. You can access the number attribute of the chapter element as
follows:
element "section" output attribute "number" of parent
You can use using to simplify the reference to this attribute by enabeling you to refer to it by
its attribute name alone (and thus to use the %v format item):
element "section" using attribute "number" of parent output "%v(number)"
This is valuable because when an attribute is output using %v, translate rules are applied to it. If it is
output using the attribute keyword or is read from the attributes shelf, translate
rules are not applied.
Suppose that the section element also has an attribute number. In this case we need to be able to
distinguish between the two attribute names. To do this we can add an as clause to
using to give the chapter level number attribute another name in the local scope:
element "section" using attribute "number" of parent as chapter-number output "%v(chapter-number).%v(number)"
To further clairify this code, we can use using to give the local number attribute a distinct
name also:
element "section" using attribute "number" as section-number using attribute "number" of parent as chapter-number output "%v(chapter-number).%v(section-number)"
The scope of the using prefix is the lexical scope to which it applies (either the following
action, or a scope defined by a block).
When used with an attribute, the using prefix must include either an element specifier (introduced by
of) or an alias (introduced by as), or both.
You can refer to the attribute you are interested in using either the attribute keyword (as in the
examples above) or by refering to items on the attributes shelf, as shown below:
element "section" using attributes {"number"} as section-number using attributes of parent {"number"} as chapter-number output "%v(chapter-number).%v(section-number)"
You can also use using with the data-attribute keyword and the
data-attributes shelf in the same way.
Finally, you can use using to select an item from a list valued attribute:
element "foo" using attribute "bar" [3] as "bar-3" output "%v(bar-3)"