presentation: A Gentle Introduction to Cocoon. image-directory: cocoon-images Author: Warrell Harries For: Wiley Interscience/SCS Date: September 2007 Compelling reasons to be cheerful when faced with new Web Publishing Challenges slide: Why So? hint-style: LittleText img_leftThird: mother.jpg subtitle: It's too New. 1999, Stefano Mazzocchi, MIT, Apache Board Member href: http://cocoon.apache.org/2.1/userdocs/concepts/index.html subtitle: It's strange. Unix pipelines subtitle: It's different. XML++ subtitle: It's compulsive. My eyesight is deteriorating subtitle: It's weird, Euro trash So was Lego, in the beginning subtitle: They eat their own dog food over there Mighty nutritious and delicious img_rightThird: dummies.png slide: Complexity demands Architecture hint-style: LittleText img_rightHalf: pyramid.jpg subtitle: Pyramid of Contracts Separate 4 major Concerns with 5 Comprehensible Contracts subtitle: Mix 'em at your Peril Functional, Declarative Pipelines enforce side-effect-less-ness subtitle: KISS Follow a piece of string subtitle: Service Oriented Web, EJB, Internal protocol and External proxy img_fullWidth: cocoon.jpg slide: XML at the top of the Stack hint-style: LotsOfText img_leftFifth: whiteheat.jpg img_rightHalf: crunchy.jpg sound: madeitma.mp3 subtitle: Impedance Mismatch XML from the top down maintains consistency subtitle: The Climate Changed We aren't standing on OO land anymore - afloat on the monster mashup blogosphere subtitle: Greater Agility Required Let the framework do the heavy lifting note: Ruby on Rails vs Grails vs Cocoon sound: ruby.mp3 subtitle: A developer writes 10 lines of working code a day subtitle: 10 lines of Java doing something arcane to the business DOM code: clientElement = ElementHelper.getElement( updatedRiskData.getRootElement(), "//client" ); processDataElement.add( clientElement.detach() ); // clear modified flags modifiedItems = processDataElement.selectNodes( "//*[@modified='true']" ); if ( ( modifiedItems != null ) && !modifiedItems.isEmpty() ) { Iterator itemIter = modifiedItems.iterator(); while ( itemIter.hasNext() ) { // remove attribute ( (Element) itemIter.next() ).addAttribute( "modified", null ); } } subtitle: A 10 line pipeline that invokes EJB services, builds a view of the results and re-uses a presentation resource code: subtitle: Mixing-up mental models Uniformity of approach costs less in the long run slide: Pipes hint-style: LittleText subtitle: Unix Pipes, Yahoo Pipes, Teqlo, Drain Pipes, Half-Pipes code: grep index.html access.log | awk ‘{print $2 }’ | sort | uniq | wc -l img_leftFifth: pipes.gif img_rightThird: teqlo.gif subtitle: Tools to build hosted mashup applications note: Cocoon patterns are merging into the mainstream. Pipes mashes up data feeds, Teqlo orchestrates the inputs and outputs of widgets img_leftFifth: paloose.png note: Paloose is a simplified (much simplified) version of Cocoon using PHP. There are relatively few ISPs who will support Java/Tomcat for web sites and this is the authors solution to that dilemma img_leftThird: tube_map.gif subtitle: XProc - An XML Pipeline Language href: http://www.w3.org/TR/xproc/ subtitle: The Sitemap is a Plan of the pipelines slide: Pipeline Detail subtitle: The Pipelines that generate this presentation; dynamically or statically Produces the Index of available presentations code: Produces the Raw ASCII data of a complete presentation code: Produces the XML data of a complete presentation code: Produces the XML data of a single slide code: Produces the Index (list of slides) of a presentation code: Produces a Single slide or full presentation in HTML code: subtitle: Simple Line Oriented Parser Yet Another Presentation Tool subtitle: Stand on the shoulders of Giants and recurse slide: CLI mode for generating static content hint-style: LittleText subtitle: cocoon cli -x query.xconf -n wiley code: slide: Components hint-style: LittleText img_leftThird: components.jpg subtitle: Generators in the Beginning subtitle: Transformers there was the Word subtitle: Serializers and it was Good img_fullWidth: pipeline.gif slide: Next Steps img_leftFifth: tube.jpg Generate a static page for each book in collection Develop workflow applications Content Management System note: Presentation wizard to automatically generate complicated flashy layouts with lots of gee-whiz transition effects. Just kidding.