Apache Cocoon 3 is a major rewrite of Cocoon 2.2. Like Cocoon 2 it is based around the concept of pipelines and sitemaps and it is very similar to Cocoon 2.2 in many respects but is slimmed down and designed to be easily used with Java code (= no frameworks required!). On top of this, Cocoon 3 has the goal of becoming the best available platform for RESTful webservices and web applications.
Here is an example that transforms an XML document by reading it from an URL, will be processed including linked documents following the XInclude recommendation, then will be transformed applying a stylesheet, validated against an XSchema, and finally serialized:
URL base = this.getClass().getResource("http://com.acme/"); Pipeline<SAXPipelineComponent> pipeline = new NonCachingPipeline<SAXPipelineComponent>(); pipeline.addComponent(new XMLGenerator(new URL(base, "feed.xml"))); pipeline.addComponent(new XIncludeTransformer(base)); pipeline.addComponent(new XSLTTransformer(this.getClass().getResource("/trax.xslt"))); pipeline.addComponent(new SchemaProcessorTransformer(this.getClass().getResource("/validate.xsd"))); pipeline.addComponent(new XMLSerializer()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); pipeline.setup(baos); pipeline.execute();
The idea behind using a pipeline for this purpose is that the content of the pipeline (in this case SAX events) is streamed without any necessary serialization or deserialization steps between the components.
But there is more that Cocoon 3 offers. See our features list.