====== The Epeios XML preprocessor ('XPPq') ======
| ^ //[[.:CLI:|xppq-cli]]// ^ //[[.:JRE:|xppq-java]]// ^ //[[.:NJS:|xppq-node]]// ^ //[[.:ZND:|xppq-php]]// ^
^ //[[:s:x:Travis CI]]// (//GNU/Linux// & //macOS//((//Travis CI// does not provide //PHP// for //macOS//.))) | [[:travis-ci:xppq-cli:|{{https://img.shields.io/travis/epeios-q37/xppq-cli.png|xppq-cli on Travis CI}}]] | [[:travis-ci:xppq-java:|{{https://img.shields.io/travis/epeios-q37/xppq-java.png|xppq-java on Travis CI}}]] | [[:travis-ci:xppq-node:|{{https://img.shields.io/travis/epeios-q37/xppq-node.png|xppq-node on Travis CI}}]] | [[:travis-ci:xppq-php:|{{https://img.shields.io/travis/epeios-q37/xppq-php.png|xppq-php on Travis CI}}]] |
^ //[[:s:x:AppVeyor]]// (//Windows//) | [[:appveyor:xppq-cli:|{{https://img.shields.io/appveyor/ci/epeios-q37/xppq-cli.png|xppq-cli on AppVeyor}}]] | [[:appveyor:xppq-java:|{{https://img.shields.io/appveyor/ci/epeios-q37/xppq-java.png|xppq-java on AppVeyor}}]] | [[:appveyor:xppq-node:|{{https://img.shields.io/appveyor/ci/epeios-q37/xppq-node.png|xppq-node on AppVeyor}}]] | [[:appveyor:xppq-php:|{{https://img.shields.io/appveyor/ci/epeios-q37/xppq-php.png|xppq-php on AppVeyor}}]] |
===== Introduction =====
//XPPq// is a tool from the //Epeios// project which transforms an //XML// file to another //XML// file, following directives inserted directly in the source //XML// file. This directives allow to handle macros, to affect value to variables and to test their values, to include files... In a glance, //XPPq// aims to be to //XML// what ''[[wp>C_preprocessor|cpp]]'' is to C/C++.
To achieve this, following directives are available:
* '''' which allows the inclusion of a file,
* ''...'', which, in combination with '''' allows the definition and expansion of a macro,
* '''', which, in combination with ''...'' allows the conditional inclusion of an //XML// tree.
More about this directives and the others can be found in the [[.directives:|directives dedicated page]].
The preprocessor is also embedded in all the //Epeios// software which handle //XML// files. So the //xpp// directives can also be used for those files.
The default //XML// namespace: ''%%http://q37.info/ns/xpp%%'' (''xmlns:xpp="%%http://q37.info/ns/xpp%%"'').
#@OS_HTML~XPPq~@#
//XPPq// handles 8-bits encoded files, and also //UTF-8// encoded files, with or without BOM. All included files (using the ''expand'' directive) have to use the same encoding as the file which includes them.
===== Configuration =====
The default namespace is ''xppq'', but it can be changed by setting the ''Parameters/Namespace'' entry in the configuration file (the ''.xcfg'' suffixed file), or with the ''-n|%%--%%namespace'' argument for the command-line version of //XPPq// (launch ''xppq %%--%%help'' for more details).
#@CONF_HTML@#
===== Usage =====
* //[[.:CLI:]]// variant,
* //[[.:JRE:|Java]]// variant,
* //[[.:NJS:|Node.js]]// variant,
* //[[.:ZND:|PHP]]// variant.
===== Licenses =====
#@M_LICENSE_HTML~XPPq~@#
===== The directives =====
The recognized directives are: ''define'', ''expand'', ''attribute'', ''set'', ''ifeq'', ''cdata'' and ''bloc''. More details can be found on this [[directives|page]], on which you can also find an example of use.
===== Author =====
#@H_AUTHOR_HTML~XPPq~@#