XProc
XProc is a W3C Recommendation to define an XML transformation language to define XML Pipelines.
Filename extension |
.xpl |
---|---|
Internet media type |
application/xproc+xml |
Developed by | World Wide Web Consortium |
Type of format | Stylesheet language |
Extended from | XML |
Standard | 1.0 (Recommendation) |
Below is an example abbreviated XProc file:
<p:pipeline name="pipeline" xmlns:p="http://www.w3.org/ns/xproc" version="1.0">
<p:input port="schemas" sequence="true"/>
<p:xinclude/>
<p:validate-with-xml-schema>
<p:input port="schema">
<p:pipe step="pipeline" port="schemas"/>
</p:input>
</p:validate-with-xml-schema>
</p:pipeline>
This is a pipeline that consists of two atomic steps, XInclude and Validate. The pipeline itself has three inputs, “source” (a source document), “schemas” (a list of W3C XML Schemas) and “parameters” (for passing parameters). The XInclude step reads the pipeline input “source” and produces a result document. The Validate step reads the pipeline input “schemas” and the output from the XInclude step and produces a result document. The result of the validation, “result”, is the result of the pipeline.
Here is an equivalent less abbreviated XProc pipeline:
<p:pipeline name="pipeline" xmlns:p="http://www.w3.org/ns/xproc"
version="1.0">
<p:input port="schemas" sequence="true"/>
<p:xinclude name="included">
<p:input port="source">
<p:pipe step="pipeline" port="source"/>
</p:input>
</p:xinclude>
<p:validate-with-xml-schema name="validated">
<p:input port="source">
<p:pipe step="included" port="result"/>
</p:input>
<p:input port="schema">
<p:pipe step="pipeline" port="schemas"/>
</p:input>
</p:validate-with-xml-schema>
</p:pipeline>
Implementations
- Calabash maintained by Norman Walsh
- Calumet, EMC’s XProc implementation
- MorganaXProc, developed by <xml-project />[1]
- QuiXProc, Innovimax's (GPL) version in Java implementing Streaming and Parallel processing
- Tubular (LGPL) maintained by Herve Quiroz
- xprocxq, XQuery old implementation on top of eXist
- xproc.xq, XQuery implementation on top of MarkLogic[2]
gollark: However, this is inefficient. If you want to serve 12904172408718240 concurrent connections, you don't want to have one thread for each, especially if each one isn't used that much.
gollark: You simply do a thing, and wait for it to finish, in your thread.
gollark: That is the normal uncool kind of IO.
gollark: So, synchronous IO.
gollark: This isn't Rust, this is a Rust library, and what?
External links
- The XML Processing Model Working Group page at W3C
- The W3C Recommendation
- The web site maintained by Norman Walsh
- XProc tutorial
- XProc reference
References
- Berndzen, Achim; Imsieke, Gerrit (June 2016). "Interoperability of XProc pipelines". XML London 2016. doi:10.14337/XMLLondon16.Berndzen01. ISBN 978-0-9926471-3-1.
- Fuller, James (June 2013). "xproc.xq - Architecture of an XProc Processor". XML London 2013: 113–134. doi:10.14337/XMLLondon13.Fuller01. ISBN 978-0-9926471-0-0.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.