| XMLIF(1) | xmlif | XMLIF(1) |
.SH "NAME" xmlif - conditional processing instructions for XML
.SH "SYNOPSIS"
.HP 144u
xmlif [attrib=value...]
.SH "DESCRIPTION"
.PP xmlif filters XML according to conditionalizing markup. This can be
useful for formatting one of several versions of an XML document depending
on conditions passed to the command.
.PP Attribute/value pairs from the command line are matched against the
attributes associated with certain processing instructions in the document.
The instructions are <?xmlif if?> and its inverse <?xmlif if
not?>, <?xmlif elif?> and its inverse <?xmlif elif not?>,
<?xmlif else?>, and <?xmlif fi?>.
.PP Argument/value pairs given on the command line are checked against the
value of corresponding attributes in the conditional processing
instructions. An `attribute match' happens if an attribute occurs in both
the command-line arguments and the tag, and the values match. An `attribute
mismatch' happens if an attribute occurs in both the command-line arguments
and the tag, but the values do not match.
.PP Spans between <?xmlif if?> or <?xmlif elif?> and the next
conditional processing instruction at the same nesting level are passed
through unaltered if there is at least one attribute match and no attribute
mismatch; spans between <?xmlif if not?> and <?xmlif elif not?>
and the next conditional processing instruction are passed otherwise. Spans
between <?xmlif else?> and the next conditional-processing tag are
passed through only if no previous span at the same level has been passed
through. <?xmlif if?> and <?xmlif fi?> (and their `not'
variants) change the current nesting level; <?xmlif else?> and
<?xmlif elif?> do not.
.PP All these processing instructions will be removed from the output
produced. Aside from the conditionalization, all other input is passed
through untouched; in particular, entity references are not resolved.
.PP Value matching is by string equality, except that "|" in an
attribute value is interpreted as an alternation character. Thus, saying
foo='red|blue' on the command line enables conditions red and blue. Saying
color='black|white' in a tag matches command-line conditions color='black'
and color='white'.
.PP Here is an example:
Always issue this text. <?xmlif if condition='html'?> Issue this text if 'condition=html' is given on the command line. <?xmlif elif condition='pdf|ps'?> Issue this text if 'condition=pdf' or 'condition=ps' is given on the command line. <?xmlif else?> Otherwise issue this text. <?xmlif fi?> Always issue this text.
AUTHOR
Eric S. Raymond <esr@snark.thyrsus.com>
| April 2009 | Linux |