HOME | NEWS | FAQ | DOCUMENTATION | DOWNLOADS | SITE MAP | CONTACTS/LINKS

Aggregation

Aggregation is one of the most useful facilities of Cocoon and Paloose. It takes several XML documents and aggregates them into a single XML document with appropriate enclosing tags for each part. Within the <map:aggregate> element there are a number of <map:part> elements that define which XML documents shold be aggregated together. A working example is given here.

The <map:aggregate> element has a single attribute

  • element — the parent element within which the entire aggregated document must be placed.

Each <map:part> element has a number of attributes that control how each part is to be included:

  • src — the name and location of the document to be included. Pseudo protocols can be used (although full URLs have not been implemented in Paloose yet).
  • element — the parent element within which this part must be placed.
  • strip-root — if this is "true" then the root element os the included document will be removed before inclusion.

As and example of aggregation consider the following extract from the Paloose site (note the use of an internal only pipeline):

<map:pipelines> <map:pipeline> <map:match pattern="**.html"> <map:aggregate element="root" > <map:part src="cocoon:/headings.xml" element="headings" strip-root="true"/> <map:part src="cocoon:/menus.xml" element="menus" strip-root="true"/> <map:part src="cocoon:/newsArticles.xml" element="news-articles" strip-root="true"/> <map:part src="cocoon:/{1}.xml" element="content" strip-root="true"/> </map:aggregate> ... </map:match> </map:pipeline> <map:pipeline internal-only="true"> <map:match pattern="menus.xml"> <map:generate src="context://content/menus.xml"/> <map:serialize/> </map:match> <map:match pattern="headings.xml"> <map:generate src="context://content/headings.xml"/> <map:serialize/> </map:match> <map:match pattern="newsArticles.xml"> <map:generate src="context://content/newsArticles.xml"/> <map:serialize/> </map:match> <map:match pattern="**.xml"> <map:generate src="context://content/{1}.xml"/> <map:serialize/> </map:match> </map:pipeline> </map:pipelines>

This will produce an aggregated document:

<?xml version="1.0"?> <root> <headings> ... </headings> <menus> ... </menus> <news-articles> ... </news-articles> <content> ... </content> </root>
 
left footerCopyright 2006 – 2010 Hugh Field-Richards. All Rights Reserved.