xmlif
April 2009
Linux
Eric
S.
Raymond
esr@snark.thyrsus.com
Author of xmlif program
xmlif
1
Sept 26 2002
xmlif
conditional processing instructions for XML
xmlif attrib=value
DESCRIPTION
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.
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?>.
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.
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.
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.
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'.
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.