In some cases, you want to include, or on the contrary exclude, some configuration elements from a configuration file depending on the working environment of the user.
For example, unless the "XMLmind FO Converter XSL-FO processor plug-in" add-on has been installed, do not add the following menu items to the → submenu (excerpts from ):XXE_install_dir/addon/config/dita/xslMenu.incl
<item label="Convert to _RTF (Word 2000+)..."
command="dita.convertToRTF"
parameter="rtf Cp1252" />
...
<item label="Convert to Open_Document (OpenOffice.org 2+ ODT)..."
command="dita.convertToRTF"
parameter="odt UTF-8" />This can be achieved as follows:
<menu label="-" insert="after ##last">
<separator />
<menu label="_Convert Document">
<item label="Convert to X_HTML..."
command="dita.convertToXHTML" />
...
<?if XSL_FO_PROCESSORS*=XFC?>
<item label="Convert to _RTF (Word 2000+)..."
command="dita.convertToRTF"
parameter="rtf Cp1252" />
...
<item label="Convert to Open_Document (OpenOffice.org 2+ ODT)..."
command="dita.convertToRTF"
parameter="odt UTF-8" />
<separator />
<?endif?>
...
<item name="convertToPDF" label="Convert to _PDF..."
command="dita.convertToPS"
parameter="pdf pdf" />
</menu>
</menu>A simple preprocessor is automatically invoked by the .xxe/.incl (XXE configuration files) and .xxe_gui (XXE GUI specification files) loaders prior to using the loaded configuration/GUI specification elements.
This preprocessor supports 3 directives specified using 3 processing-instructions:
<?ifTEST?> ...configuration/GUI specification elements... <?else?> ...configuration/GUI specification elements... <?endif?>
The else directive is optional.
If/else/endif blocks may be nested.
TEST is generally the name of a system property. If the system property is defined, the test evaluates to true, otherwise, it evaluates to false. Example (excerpts from DesktopApp.xxe_gui):
<menu name="fileMenu" label="_File" helpId="fileMenu"> <?if XXE.Feature.NewWindow?> <action name="newWindowAction" /> <separator /> <?endif?> <action name="newAction" /> <separator /> ...
However, this test is not limited to testing the existence of a system property. It is also possible to specify:
system_property_name=valueThe test evaluates to true when specified system property exists and is equal to specified value.
system_property_name^=valueThe test evaluates to true when specified system property exists and starts with specified value.
system_property_name$=valueThe test evaluates to true when specified system property exists and ends with specified value.
system_property_name*=valueThe test evaluates to true when specified system property exists and contains specified value.
It is also possible to reverse the result of a test by preceding it by "!". Example:
<?if ! os.name*=Linux> <toolBar name="mainToolBar" insert="after importRTFAction"> <action name="importDOCXAction" /> </toolBar> <?endif?>