1.20. Process variables
Prev | 1. Reference | Next

### 1.20. Process variables

Almost all child elements and attribute values in a `process` element can include variables which are substituted just before the execution of the process-command. Example: `<upload base="%0/">`.

Variable | Description
--- | ---
`%0`, `%1`, `%2`, ..., `%9`, `%*` | A process-command can have a parameter. This string is split like in a command line. First 10 parts of the split parameter can be referenced as variables `%0`, `%1`, `%2`, ..., `%9`. `%*` can be used to reference the whole parameter of the process-command.
`%D`, `%d` | `%D` is the file name of the document being edited. Example: `C:\novel\chapter1.xml`. This variable is replaced by an empty string if the document being edited is found on a remote HTTP or FTP server. `%d` is the URL of the document being edited. Example: `file:///C:/novel/chapter1.xml`.
`%P`, `%p` | `%P` is the name of the directory containing the document being edited. Example: `C:\novel`. This variable is replaced by an empty string if the document being edited is found on a remote HTTP or FTP server. `%p` is the URL of the directory containing the document being edited. Example: `file:///C:/novel`. Note that this URL does not end with a '`/`'.
`%N`, `%R`, `%E` | %N is the base name of the document being edited. Example: `chapter1.xml`. %R is the base name of the document being edited without the extension, if any (sometimes called the root name). Example: `chapter1`. %E is the extension of the document being edited, if any. Example: `xml`. Note that the extension does not start with a '`.`'.
`%n`, `%r`, `%e` | Similar to `%N`, `%R`, `%E` except that these variables contain properly escaped URI components. For example if `%R` contains "`foo bar`", then `%r` contains "`foo%20bar`".
`%S` | `%S` is the native path component separator of the platform. Example: `'`\`'` on Windows.
%U | User's account name. Example: `john`.
%H | User's home directory. Example: `/home/john`.
`%W`, `%w` | `%W` is the name of the temporary process directory. Example: `C:\temp\xxe1023E45`. `%w` is the URL of the temporary process directory. Example: `file:///C:/temp/xxe1023E45`. Note that this URL does not end with a '`/`'.
`%C`, `%c` | `%C` is the name of the directory containing the XXE configuration file from which the process command has been loaded. Example: `C:\Program Files\XMLmind_XML_Editor\addon\config\docbook`. `%c` is the URL of the above directory. Example: `file:///C:/Program%20Files/XMLmind_XML_Editor/addon/config/docbook`. Note that this URL does not end with a '`/`'.

The "`%`" character can be escaped using "`%%`". The above variables can be specified as `%{0}`, `%{1}`, ..., `%{R}`, `%{E}`, etc, if it helps (see note about escaped URIs).

### Note

Most attribute and element values described in this documentation as being URIs (data type anyURI) in fact are not URIs. These attribute and element values can contain %-variables. They are required to be valid URIs only after the %-variables have been substituted with their values.

The problem is that URIs may also contain escaped characters which look very much like references to %-variables. For example, a whitespace must be escaped as "`%20`", which looks like a reference to variable `%2` followed by literal string "`0`".

In practice:

1. It is recommended to specify variables as `%{0}`, `%{1}`, ..., `%{d}`, `%{E}`, etc, rather than as %0, %1, ..., %d, %E, etc, because it makes clear what is a variable reference and what is an escaped character.

2. An escaped character such as "%20" must be specified as "%%20" because variable substitution occurs before the URIs are used and because, during variable substitution, a real percent character can be protected against substitution by doubling it.

Example: relative URI "docs/my report/my.doc.%0", where variable %0 represents a file extension, must be specified as "docs/my%%20report/my%%20doc.%0".

Prev | Up | Next
1.19. Element `subProcess` | Home | 2. Commented examples