XSLT Processing Pipeline has been edited by Juanjo Vazquez (Apr 06, 2009).

Change summary:

Intro added

(View changes)

Content:

In the Apache Sling Scripting W3C XML Processing Support bundle, Juanjo Vázquez has implemented XSLT processing support for Sling as another new scripting engine, based on the Cocoon 3 pipeline engine.

Intro

An XML pipeline specifies a sequence of operations to be performed on zero or more XML documents. There are a number of advantages to using pipelines above all in terms of separation of concerns. On the other hand, we talk about XSLT processing if the operations in a pipeline are performed executing or applying XSLT stylesheets.

XSLT processing support is implemented in Sling as an scripting engine bundle named Apache Sling Scripting W3C XML Processing Support. This bundle is based on the Cocoon 3 pipeline engine and uses the W3C XProc language in order to specify pipelines to be processed.

For the time being, XProc is partially implemented and it´s not clear that Sling must support all W3C recomendation yet. This could depend of concrete user requirements or use cases.

The source code is found in the contrib/scripting/xproc module.

Samples

Simple

This is just a very simple initial sample - more samples and details to come.

1. Install the org.apache.sling.scripting.xproc bundle by either building it from contrib/scripting/xproc folder in the Sling trunk or by dowloading it from the Apache Snapshot repository here: org.apache.sling.scripting.xproc-2.0.0-incubator-20090403.114403-1.jar

2. Create some content

$ curl -F sling:resourceType=xproc -F title="some title" -F text="And some text" http://admin:ad...@localhost:8888/foo

3. Create a pipeline script at /apps/xproc/xproc.xpl :

<?xml version="1.0" encoding="UTF-8"?>
<p:pipeline xmlns:p="http://www.w3.org/ns/xproc">

  <p:xslt>
    <p:input port="stylesheet">
      <p:document href="" class="code-quote">"/apps/xproc/one.xsl"/>
    </p:input>
  </p:xslt>

  <p:xslt>
    <p:input port="stylesheet">
      <p:document href="" class="code-quote">"/apps/xproc/two.xsl"/>
    </p:input>
  </p:xslt>

</p:pipeline>

4. Store the XSLT transforms in the repository:

/apps/xproc/one.xsl
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <one>
    <xsl:copy-of select="."/>
  </one>
</xsl:template>

</xsl:stylesheet>
/apps/xproc/two.xsl
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <two>
    <xsl:copy-of select="."/>
  </two>
</xsl:template>

</xsl:stylesheet>

5. Request foo.html to execute the pipeline:

$ curl http://admin:ad...@localhost:8888/foo.html

<?xml version="1.0" encoding="UTF-8"?>
<two>
  <one>
    <foo ...sling:resourceType="xproc" text="And some text" title="some title"/>
  </one>
</two>

Reply via email to