![]() | ![]() | XIncludeTransformerThe XIncludeTransformer provides a means of including other XML fragments into the XML file being processed. It follows the XInclude specification. It is possible to include XML or text in several ways:
The XIncludeTransformer component is declared and used in the sitemap as: <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
<map:components>
<map:transformers default="xslt">
<map:transformer name="xinclude" src="resource://lib/transforming/XIncludeTransformer"/>
...
</map:transformers>
</map:components>
<map:pipelines>
<map:pipeline>
<map:match pattern="**.html">
<map:generate src="context://content/index.xml" label="index-xml"/>
<map:transform type="xinclude"/>
...
</map:match>
</map:pipeline> Simple ExampleWithin the source XML include statements are entered simply as this folowing example shows. The example consists of a source file: <?xml version="1.0" encoding="UTF-8"?>
<page:page xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:t="http://www.hsfr.org.uk/Schema/Text"
xmlns:page="http://www.hsfr.org.uk/Schema/Page">
<page:meta>
...
</page:meta>
<page:content>
<t:heading level="1">XInclude Test</t:heading>
<xi:include href="part-1.xml">
<xi:fallback>
<t:p>Error.</t:p>
</xi:fallback>
</xi:include>
<xi:include href="part-1.xml#element(/1/2/1)" parse="xml">
<xi:fallback>
<t:p>Error.</t:p>
</xi:fallback>
</xi:include>
<xi:include href="part-2.xml#xmlns(page=http://www.hsfr.org.uk/Schema/Page)xpointer(//page:content/*)" parse="xml">
<xi:fallback>
<t:p>Error.</t:p>
</xi:fallback>
</xi:include>
</page:content>
</page:page> and three included files: part-1.xml <?xml version="1.0" encoding="UTF-8"?>
<page:page xmlns:t="http://www.hsfr.org.uk/Schema/Text" xmlns:page="http://www.hsfr.org.uk/Schema/Page">
<page:meta>
...
</page:meta>
<page:content>
<t:p>First paragraph</t:p>
</page:content>
</page:page> part-2.xml <?xml version="1.0" encoding="UTF-8"?>
<page:page xmlns:t="http://www.hsfr.org.uk/Schema/Text" xmlns:page="http://www.hsfr.org.uk/Schema/Page">
<page:meta>
...
</page:meta>
<page:content>
<t:p>Second paragraph</t:p>
</page:content>
</page:page> part-3.xml <?xml version="1.0" encoding="UTF-8"?>
<page:page xmlns:t="http://www.hsfr.org.uk/Schema/Text" xmlns:page="http://www.hsfr.org.uk/Schema/Page">
<page:meta>
...
</page:meta>
<page:content>
<t:p>Third paragraph</t:p>
</page:content>
</page:page> After the transformer has run the document will be: <page:page
xmlns:page="http://www.hsfr.org.uk/Schema/Page"
xmlns:t="http://www.hsfr.org.uk/Schema/Text">
<page:meta>
...
</page:meta>
<page:content>
<t:heading level="1">XInclude Test</t:heading>
<page:page>
<page:meta>
...
</page:meta>
<page:content>
<t:p>First paragraph</t:p>
</page:content>
</page:page>
<page:content>
<t:p>Second paragraph</t:p>
</page:content>
<t:p>Second paragraph</t:p>
</page:content>
</page:page> | ![]() |


