A community-driven effort to define an XProc 3.0 specification (formerly 1.1)
Clone or download
ndw Merge pull request #709 from ndw/editorial
A collection of mostly editorial changes
Latest commit 043aa00 Jan 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
buildSrc/src/main/groovy/com/nwalsh/tasks Refactored specs Feb 26, 2018
gradle/wrapper Add gradlew wrapper for consistency Aug 31, 2018
lib Bump DocBook version, first primitive attempt at PDF output Jan 14, 2019
overview Merge steps-intro prose into the other specs; remove it Nov 2, 2018
schema Added assert markup for testable conditions Jun 12, 2018
src/main Suppress DT/DT, DT/DD page breaks Jan 16, 2019
step-exec Use latest jing/trang from Maven Dec 4, 2018
step-run Use latest jing/trang from Maven Dec 4, 2018
step-validation Use latest jing/trang from Maven Dec 4, 2018
step-xquery Use latest jing/trang from Maven Dec 4, 2018
step-xsl-formatter Use latest jing/trang from Maven Dec 4, 2018
steps Fixed type of attribute serialization Jan 12, 2019
tools More hacking at PDF output Jan 14, 2019
xproc Mostly editorial changes Jan 16, 2019
.calabash Fix class name Sep 28, 2018
.gitignore Maintenance fixes on implementation p:run Jul 9, 2018
.travis.yml Add gradlew wrapper for consistency Aug 31, 2018
README.md remove caveat as the patch is now accepted Dec 11, 2018
build.gradle More hacking at PDF output Jan 14, 2019
gradle.properties Bump DocBook version, first primitive attempt at PDF output Jan 14, 2019
gradlew Add gradlew wrapper for consistency Aug 31, 2018
gradlew.bat Add gradlew wrapper for consistency Aug 31, 2018
settings.gradle Converted orphaned p:run step into a spec. Jul 3, 2018

README.md

XProc 3.0: An XML Pipeline Language

This is the home of the XProc 3.0 specification developed by the XProc next community group.

Drafts are published automatically at spec.xproc.org.

GitHub

The XProc community is using GitHub to manage the development of this specification. Please pull the repository, make improvements, and propose changes in the form of pull requests.

Continuous integration

The XProc specification is built automatically with Travis CI.

To build and publish the spec on your gh-pages, create the following secure environment variables for your repo in the Travis CI Settings page for your fork:

  • GH_TOKEN="your git token"
  • GIT_EMAIL="you@example.com"
  • GIT_NAME="Your Name"
  • GIT_PUB_REPO="you/3.0-specification"
  • GIT_PUB_BRANCH="master"

You also have to setup a gh-pages branch, naturally.

How it works

The documents are built by a gradle task that runs XML Calabash and other tools. The individual specifications are in sub-projects. At the time of this writing, there are seven specifications (there may be more by the time you read this):

  • overview is the overview page that points to all the specs
  • xproc is XProc 3.0: A Pipeline Language
  • steps-intro is introductory information about all steps
  • steps is XProc 3.0: Standard Step Library
  • step-validate-relax-ng is the p:validate-with-relax-ng step
  • step-validate-schematron is the p:validate-with-schematron step
  • step-validate-xml-schema is the p:validate-with-xml-schema step

The default gradle target, allspecs, will build all of the specifications. The built specifications are in the build/dist/ directory or directories below it.

Within each subproject, the “source” for each specification is in src/main/xml/specification.xml. There may be other files as well. Use XInclude to break specs into pieces if you wish.

About the workflow

It’s all a bit complicated. These are some notes.

  • All specifications have a glossary; if the glossary turns out to be empty, because there are no term definitions (firstterm elements) in a specification, it will be elided automatically.
<xi:include href="../../../build/glossary.xml">
  <xi:fallback>
    <glossary xml:id="glossary">
      <title>Glossary</title>
      <para>Glossary needs to be generated</para>
    </glossary>
  </xi:fallback>
</xi:include>
  • Similarly, for steps, there is a step errors appendix. It will be populated automatically and elided if there are no step errors.
<appendix xml:id="app.step-errors">
<title>Step Errors</title>
<para>The following <glossterm baseform="dynamic-error">dynamic errors</glossterm>
can be raised by the <code>p:validate-with-relax-ng</code> step:</para>
<?step-error-list?>
</appendix>
  • There is a single, master bibliography in src/main/xml/bibliography.xml. In each specification, use biblioref to refer to bibliography entries. Create a bibliolist with empty bibliomisc elements to pull in the relevant entries from the master bibliography:
<appendix xml:id="references">
<title>References</title>
<bibliolist>
<bibliomixed xml:id="xproc30"/>
<bibliomixed xml:id="xproc30-steps"/>
<bibliomixed xml:id="iso19757-2"/>
<bibliomixed xml:id="relaxng-compact-syntax"/>
<bibliomixed xml:id="relaxng-dtd-compat"/>
</bibliolist>
</appendix>
  • Examples and graphics are also a little complicated. I’ll describe them here if anyone asks. :-)

The build process is owned by norm; bug him if you have difficulties.