<xslTutorial creator="DPawson@rnib.org.uk">
<index keywords='ancestor ancestor-or-self attribute child descendant descendant-or-self following following-sibling namespace parent preceding preceding-sibling self '/>

<description>All axes were used in this example.</description>

<xmlSource id="id1">
<doc>
  <ancprec>
<p>Preceeding Ancestor. <br/></p>
   </ancprec>

<gf>
<p>Ancestor. <br/></p>

   <pprec choice="a">
<p>Preceeding Parent.<br/> </p>
   </pprec>

<par>
<p>Parent. <br/></p>
    <sibprec>
<p>Preceeding sibling.<br/> </p>
    </sibprec>

 <me id="id001">
<p>Me.<br/> </p>
<!-- Comment after Me -->

  <chprec>
   <p>Preceeding child.<br/> </p>
  </chprec>
  <child idref="id001">
    <p>Child. <br/></p>
<?pi Processing Instruction ?>
    <dprec>
      <p>preceeding Descendant.<br/> </p>
    </dprec>
   <desc>
    <p>Descendant.<br/> </p>
   </desc>
   <dfoll>
     <p>Following Descendant.<br/> </p>
   </dfoll>
  </child>
  <chfoll>
   <p>following child.<br/> </p>
  </chfoll>

 </me>

 <sibfoll>
   <p>Following Sibling.<br/> </p>
 </sibfoll>
</par>

<pfoll>
<p>Following Parent.<br/> </p>
</pfoll>
</gf>
<ancfoll>
<p>following Ancestor.<br/></p>
</ancfoll>

</doc>
</xmlSource>

<attValues>
<value match="">
</value>
</attValues>


<xslStylesheet id="id2">

<xsl:template match="/">  
<!-- Lesson. Note how the initial context node
is reduced by the apply templates; this stops
the 'leaking' of content when all I want is 
a subset of the whole in the result tree -->
<xsl:apply-templates select="//me"/>  
</xsl:template>  


<xsl:template match="br">
  <br />
</xsl:template>

<xsl:template match="me" priority="10">
<html>
 <head>

  <title>  <xsl:text>Document</xsl:text>  </title>
 </head>
<body> 


<H2>Following Axis</H2>
<b><xsl:apply-templates select="following::*/p"/></b>

<H2>Descendant or Self Axis</H2>
<b><xsl:apply-templates select="descendant-or-self::*/p"/></b>

<H2>Descendant  Axis</H2>
<b><xsl:apply-templates select="descendant::*/p"/></b>

<H2>Self Axis</H2>
<b><xsl:apply-templates select="self::*/p"/></b>

<H2>Child Axis</H2>
<b><xsl:apply-templates select="child::*/p"/></b>

<H2>Following Axis</H2>
<p><b><xsl:apply-templates select="following::*/p"/></b>
<br /><i>Note the lack of ancestors here? <br />Learned anything
about document order yet?</i></p>





<H2>Following Sibling Axis</H2>
<b><xsl:apply-templates select="following-sibling::*"/></b>


<H2>Attribute Axis</H2>
<b><xsl:apply-templates select="attribute::*"/></b>

<H2>Parent Axis</H2>
<b><xsl:apply-templates select="parent::*/p"/></b>

<H2>Ancestor or Self  Axis</H2>
<b><xsl:apply-templates select="ancestor-or-self::*/p"/></b>

<H2>Ancestor  Axis</H2>
<b><xsl:apply-templates select="ancestor::*/p"/></b>

<H2>Preceding Sibling Axis</H2>
<b><xsl:apply-templates select="preceding-sibling::*/p"/></b>



<H2>Preceeding Axis</H2>
<b><i>Not Implemented in XT 22 09 99</i></b>

<H2>Namespace Axis</H2>
<b><i>Not Implemented in XT 22 09 99</i></b>
 </body>
</html> 
      
</xsl:template>      


</xslStylesheet>


</xslTutorial>