macro->macro_name_NCName'(' [parameters] ')' '{'block_contents'}'parameters->parameter_name_NCName[ ','parameter_name_NCName]*block_contents-> [command|if|foreach]*
A macro command is simply a user-defined command. It is invoked by its name just like predefined commands. It can be passed arguments just like predefined commands. Beside its parameters which act like local variables, it can have other local variables declared by the means of special command variable. Like any other command, a macro is executed in the context of the current context node[1].
A macro command is local to the script file containing it. See include to learn how the same macro command may be shared between several script files.
Examples:
macro unstyle-heading(heading) {
variable("text", string(.));
for-each $heading//*[(self::b or
self::big or
self::cite or
self::dfn or
self::em or
self::i or
self::q or
self::s or
self::small or
self::strong or
self::tt or
self::u) and
string(.) = $text and
not(@id)] {
unwrap-element();
}
}
macro heading-to-bridgehead() {
set-attribute("class",
concat("bridgehead", substring-after(local-name(), "h")));
set-element-name("p");
}