This pipeline validates and then styles each sub-part of the input document which matches an XPath expression you provide, and reassembles the results into their original context. You can see below both the XML form and a snapshot of the pipeline authoring tool display for this pipeline.
The validate and transform steps, because they
are within the scope of a viewport (bounded by the narrow and
widen steps, indicated by the red arrows in the snapshot), are
carried out on each sub-tree within the input document which matches the
selector XPath expression, e.g. html:div.
<p:pipeline xmlns:p="http://www.w3.org/2002/02/xml-pipeline"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:html="http://www.w3.org/1999/xhtml">
<p:processdef name="transform" definition="MT_XSLT_1.0"/>
<p:processdef name="narrow" definition="MT_BeginViewport"/>
<p:processdef name="widen" definition="MT_EndViewport"/>
<p:processdef name="validate" definition="MT_W3C_XML_Schema_1.0"/>
<p:process type="narrow">
<p:input label="$IN"/>
<p:param name="select" select="selector"/>
<p:output label="#i2.0"/>
</p:process>
<p:process type="validate">
<p:input label="#i2.0"/>
<p:input name="schema" label="schemaDoc"/>
<p:output label="#i4.2"/>
</p:process>
<p:process type="transform">
<p:input label="#i4.2"/>
<p:input name="stylesheet" label="stylesheet"/>
<p:output label="#i5.2"/>
</p:process>
<p:process type="widen">
<p:input label="#i5.2"/>
<p:output label="$OUT"/>
</p:process>
</p:pipeline>
