- The problem ... - We work for stakeholders who managed a database of books - They have requirements - What even is a pipeline? - A pipeline is a program is focused on composition: programs that take inputs from the outputs of other programs, or even other pipelines. - XProc is a XML pipelining technology. - XProc has two predominant implementations: - XML Calabash is for XProc 1.0 - MorganaXProc-IIIse is for XProc 3.0 - XProc 3.0 has made signifcant changes - Better syntax - Most importantly, focused on improving non-XML inputs and outputs - This tutorial is focused on XProc 1.0 - So why even have pipelines? - We have multiple requirements - Some neatly fit into part of a program, or represent one program - Other requirements are the combination of multiple programs - How do we reuse well-organized parts or whole programs and not just copy-paste them over and over again? - Let's make pipelines: building blocks of XProc 1.0 - Steps - built-in library of steps in XProc 1.0 - A XProc file (`.xpl`) in and of itself can be a step - Inputs - `input` - `document` - reads and parses from the file system (XML only) - `empty` - `port` - connects to another pipe (or this one) - Outputs - `output` - makes a port - `store` - saves a resource - Processing - `identity` - snapshot of current state - `xslt` - transform with provided XSLT - Let's make pipines: use cases for building blocks - Solution 1 - Solution 1a - Solution 2 - Solution 3 - Solution 5 - Conclusion - Questions