Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue 6 #12

Merged
merged 4 commits into from Jun 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Binary file added img/book-front-page.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions includes/head/default.xml
@@ -1,13 +1,13 @@
<head xmlns="http://www.w3.org/1999/xhtml">
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="/css/tufte.css"/>
<link rel="stylesheet" href="/css/xproc.css"/>
<link rel="stylesheet" href="css/tufte.css"/>
<link rel="stylesheet" href="css/xproc.css"/>
<link rel="stylesheet" href="https://use.typekit.net/zgg8zqr.css" />
<script src="https://code.jquery.com/jquery-3.4.0.min.js"
integrity="sha256-BJeo0qm959uMBGb65z40ejJYGSgR7REI4+CW1fNKwOg="
crossorigin="anonymous"></script>
<script src="js/mdecl.js"></script>
<link rel="icon" href="/img/favicon.gif"/>
<link rel="icon" href="img/favicon.gif"/>
</head>
17 changes: 8 additions & 9 deletions includes/header/main.xml
Expand Up @@ -2,18 +2,17 @@
<nav class="sidebar">
<img src="img/logo.png" alt="[Logo]" id="mainlogo" />
<ul>
<li><a href="/about.html">About</a></li>
<li><a href="/resources/">Resources</a></li>
<li><a href="/contact.html">Participate</a></li>
<li><a href="/resources/events.html">Events</a></li>
<li><a href="index.html">Home</a></li>
<li><a href="https://spec.xproc.org//">Specification</a></li>
<li><a href="processors.html">Processors</a></li>
<li><a href="learning.html">Learning</a></li>
</ul>
</nav>
<h1><img src="img/logo-small.png" alt="[Logo]" id="smlogo"/>XProc.org</h1>
<nav class="inline">
<ul>
<li><a href="/about.html">About</a></li>
<li><a href="/resources/">Resources</a></li>
<li><a href="/contact.html">Participate</a></li>
<li><a href="/resources/events.html">Events</a></li>
<li><a href="index.html">Home</a></li>
<li><a href="https://spec.xproc.org//">Specification</a></li>
<li><a href="processors.html">Processors</a></li>
<li><a href="learning.html">Learning</a></li>
</ul></nav>
</header>
45 changes: 38 additions & 7 deletions src/index.md
@@ -1,16 +1,47 @@
<pubmeta>
<header>main</header>
<title>XProc.org</title>
<title>XProc 3.0 - Home</title>
</pubmeta>

This is the XProc.org website for XProc 3.0. The original website for
XProc 1.0 is archived at [archive.xproc.org](https://archive.xproc.org).
<h2>XProc 3.0 - Home</h2>

While this area is under construction, you may enjoy:
XProc is an XML based programming language for processing documents in pipelines: chaining conversions and other steps together to achieve the desired results. The current version is 3.0.

* [The specifications](https://spec.xproc.org/) or
* [The test suite](https://test-suite.xproc.org/) or
* [Erik Siegel’s book “XProc 3.0 Programmer Reference”](https://xmlpress.net/publications/xproc-3-0/)
XProc has been around, in its 1.0 version, since 2010. All information about this older version can be found [here](https://archive.xproc.org).

The following are important sources of information about XProc 3.0:

* To wet your appetite, read the [nutshell](#nutshell) section below or have a look at the *[Introduction to XProc 3.0](https://www.xml.com/articles/2019/11/05/introduction-xproc-30/)* article at the [xml.com website](https://www.xml.com/).
* There's an *XProc 3.0 Programmer Reference* book, which you can order [here](https://xmlpress.net/publications/xproc-3-0/).
* We have collected as many learning materials about XProc 3.0 as we could find [here](learning.html) (conference talks, webinars, articles, etc.).
* There is, of course, a [formal specification](https://spec.xproc.org/) of the XProc 3.0 language.
* To run XProc you need one of the [XProc processors](processors.html)
* Conformance checking of these processors is done using the [XProc test suite](https://test-suite.xproc.org/)
* You can find XProc on GitHub at [https://github.com/xproc](https://github.com/xproc)
* Join in or visit the archives of the [XProc mailing list](https://lists.w3.org/Archives/Public/xproc-dev/): `xproc-dev@w3.org`

The XProc 3.0 specification is maintained by Achim Berndzen, Gerrit Imsieke, Erik Siegel and Norman Tovey-Walsh.


<h2><a name="nutshell"/>XProc in a nutshell</h2>

* XProc is a programming language, expressed in XML, in which you can write pipelines.
* An XProc pipeline takes data as its input (often XML) and passes this through specialized steps to produce end results.
* Steps range from simple ones, like reading and writing data, to more complex stuff like splitting/combining/pruning, transformations with XSLT and XQuery, validations against schemas, etc.
* Within a pipeline you can do things like working with variables, branching, looping, catch errors, etc. Everything is based on the data flowing through.
* XProc pipelines are not limited to a linear succession of steps. They can fork and merge.
* XProc allows you to create custom steps by combining other steps. These custom steps can be used just like any other. Custom steps can be collected into libraries.
* XProc aids in the housekeeping surrounding the processing, like inspecting directories, reading documents from zip files, writing things to disk, etc
* There is software that can execute these pipelines, the so-called XProc processors.

Now why and when would this be useful? In the physical world, pipelining and working in specialized steps is not unusual. Take for instance an oil refinery: it takes crude oil as its input and, through a series of steps and intermediate products, produces petrol/gasoline, kerosene, diesel, etc. Just one look shows that refineries take the word "pipeline" very literal...

A classic from the IT world are of course UNIX pipelines. Some command produces some output and we do further processing (by, for instance, `grep` or `tail` or `head`) to get the information needed. The character used for chaining steps, `|`, is even called the "pipe" character!

So why would we do this in the world of information and document processing? One of the main reasons is that data is often not in the format we need it to be. Some examples:

* We have XML coming from some data source but need HTML for our website.
* Multiple weather stations produce data that needs to be merged into a single consolidated view. From this we produce a map with the information nicely laid out.
* Word processors produce zip files with lots of XML documents inside (most word processors do nowadays). You need the text in some other format so you’ll have to inspect the zip file, combine the XML documents inside and transform the result into what you want.

For straight transformation of XML data there are languages available, like XSLT and XQuery. But more often than not tasks are more complex than can be done in a single transformation: chaining, splitting and merging comes into play. Surrounding the transformations you need housekeeping, like where to read from or write to, inspect directories and zip files and write logs. Also from a software engineering point of view it is often desirable to work in smaller steps to get more legible and better maintainable code. This is where XProc comes into play: a single executable language to express this.
34 changes: 34 additions & 0 deletions src/learning.md
@@ -0,0 +1,34 @@
<pubmeta>
<header>main</header>
<title>XProc 3.0 - Learning</title>
</pubmeta>

<h2>XProc 3.0 - Learning</h2>

<h3>Book</h3>

<img src="img/book-front-page.png"/>

The *XProc 3.0 Programmer Reference* by Erik Siegel is available for sale [here](https://xmlpress.net/publications/xproc-3-0/).

<h3>XProc 3.0 101</h3>

Various introductory articles and videos:

* Webinars Markup UK 2020:
* [XProc 3.0 101 - Part 1](https://youtu.be/g_ockOvU57U) (Erik Siegel)
* [XProc 3.0 101 - Part 2](https://youtu.be/q0JSy07O2_I) (Erik Siegel)
* Articles on [xml.com](https://www.xml.com/):
* [An Introduction to XProc 3.0](https://www.xml.com/articles/2019/11/05/introduction-xproc-30/) (Erik Siegel)
* [XProc 3.0 - Connecting steps using ports](https://www.xml.com/articles/2020/01/23/xproc-30-connecting-steps-using-ports/) (Erik Siegel)
* Recorded conference talks:
* [XProc 3.0: Ready or Not](https://youtu.be/Q42bhIbSYLk) (Norman Tovey-Walsh at XML Prague 2020)


<h3>XProc 3.0 History</h3>

Materials from the history of developing XProc 3.0:

* [Excellent XProc 3.0](https://youtu.be/O51aE311BKU) (Erik Siegel at XML Prague 2019)
* [XProc 3.0](https://youtu.be/flej2PNT7yY) (Gerrit Imsieke at XML Prague 2018)
* [The state of Xproc 3.0](https://youtu.be/75Tk4zHOSxw) (Norman Tovey-Walsh at XML Prague 2017)
17 changes: 17 additions & 0 deletions src/processors.md
@@ -0,0 +1,17 @@
<pubmeta>
<header>main</header>
<title>XProc 3.0 - Processors</title>
</pubmeta>

<h2>XProc 3.0 - Processors</h2>

There are two XProc 3.0 processors, currently (June 2020) still under development. Both also have an XProc 1.0 version available.

<h3>MorganaXProc-III</h3>

The [MorganaXProc-III](https://www.xml-project.com/) processor is available as a beta release that implements most of the specification.


<h3>XML Calabash</h3>

The [XML Calabash](https://xmlcalabash.com/) processor is being developed.
20 changes: 0 additions & 20 deletions src/resources/event-history.html

This file was deleted.

37 changes: 0 additions & 37 deletions src/resources/events.html

This file was deleted.

4 changes: 0 additions & 4 deletions src/resources/index.md

This file was deleted.