Authoring guidelines

To submit a pipeline, you must add some specific metadata to your p:declare-step or p:library:

  1. The first element child of the document element must be a p:documentation element containing an ex:author, ex:pubdate, ex:license, ex:summary, and ex:version. It may also contain an ex:description.

    All of thet ex:* elements must be in the http://exproc.org/ns/contrib namespace:

    ex:author

    An author identifier, for example, your initials.

    ex:pubdate

    The date of publication.

    ex:license

    The license identifier, for example, mit.

    ex:summary

    A short summary of the pipeline or library, ideally one sentence. Any descendant elements in the ex:summary must be in the HTML namespace (http://www.w3.org/1999/xhtml).

    ex:version

    The pipeline or library version.

    ex:description

    Any additional documentation for the pipeline or library. This will go at the end of the documentation page. Any descendant elements in the ex:description must be in the HTML namespace (http://www.w3.org/1999/xhtml). Any section titles should begin at the H3 level.

    For example:

     1 |<p:documentation xmlns="http://www.w3.org/1999/xhtml">
       |  <ex:pubdate>2025-12-13</ex:pubdate>
       |  <ex:author>ndw</ex:author>
       |  <ex:version>1.0.0</ex:version>
     5 |  <ex:license>mit</ex:license>
       |  <ex:summary>Makes HTML documents “standalone”.</ex:summary>
       |  <ex:description>
       |    <p>This pipeline makes HTML documents “standalone”. It 
       |    uses base64 encoding and <code>data:</code> URIs to inline
    10 |    images, scripts, and CSS stylesheets.</p>
       |  </ex:description>
       |</p:documentation>
  2. Each p:input, p:output, and p:option may contain a single p:documentation element providing a short description.

    For example:

      |<p:option name="show-stored-uris"
      |          as="xs:boolean" static="true" select="false()">
      |  <p:documentation>If true, a p:message is output for each stored document.</p:documentation>
      |</p:option>

    Any descendant elements in the documentation must be in the HTML namespace (http://www.w3.org/1999/xhtml).

  3. By submitting a pipeline to be published, you agree that it may be published on https://exproc.org/ and bundled with other applications.

  4. Once published, a contributed pipeline is immutable. To enhance or correct a pipeline, a new version must be submitted.

There’s no formal or automated process for submitting pipelines. Just send them to Norm. You may find it useful to discuss the idea on the xproc-dev mailing list before submitting it.

Remember, once published, a contributed pipeline is immutable.