====== 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~@#