2.13 Versioning Considerations

A pipeline author may identify the version of XProc against which a particular pipeline (or step within a pipeline) was authored by specifying a version explicitly using the version attribute which must be a decimal number. The version attribute applies to the step on which it occurs and on descendants of that step unless or until another version attribute is encountered. The version defined by this specification is 1.0. If the version is not explicitly identified, the implicit version should be the most recent version known to the processor.

When a processor encounters a version it does not recognize, it may raise err:XDFIXME:. If it does not raise an error, then it must process steps in either backwards- or forwards-compatible mode.

2.13.1 Backwards Compatible Processing

FIXME: do the backwards compatible thing.

2.13.2 Forwards Compatible Processing

In forwards-compatible mode, the processor may encounter steps, and elements within steps, that it does not expect. These are not static errors in forwards-compatible mode:

  1. Unknown options on a step are ignored.

The following errors are ignored statically, but will cause a dynamic error if the pipeline attempts to evaluate the step.

  1. If an unknown step in the XProc namespace is encountered, it is assumed to be correct.

  2. If a connection is made to a port which is not known to the processor (for example, an attempt to connect to the "xyz" output port of the p:identity step), it is assumed to be correct.

  3. If unknown attributes (except extension attributes) occur on an element, they are ignored.

  4. If unknown element children occur with in a step, or within the descendants of a step, they are ignored.

These changes allow an author to write a pipeline which uses new features conditionally, so that older processors can still process the pipeline.