logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

xmlif - conditional processing instructions for XML

Author

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

Linux                                              April 2009                                           XMLIF(1)

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.

Name

       xmlif - conditional processing instructions for XML

Synopsis

xmlif [attrib=value...]

See Also