Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, February 9, 2022

xmlif (1)


xmlif - conditional processing instructions for XML


xmlif [attrib=value...]


XMLIF(1)                             xmlif                            XMLIF(1)

       xmlif - conditional processing instructions for XML

       xmlif [attrib=value...]

       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.

       Eric S. Raymond <esr@snark.thyrsus.com>
           Author of xmlif program

       See attributes(7) for descriptions of the following attributes:

       |ATTRIBUTE TYPE |          ATTRIBUTE VALUE           |
       |Availability   | developer/documentation-tool/xmlto |
       |Stability      | Uncommitted                        |

       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from

       Further information about this software can be found on the open source
       community website at https://pagure.io/xmlto.

Linux                             April 2009                          XMLIF(1)