Nic Miloslav     Example 58    KEYWORDS      EXAMPLES      AUTHORS     

Axes play a very important role in XSLT. Study following examples and click on the name of each axis to get some insight. Links to preceding and namespace axis does not work yet as they were not implemented in XT so far.Compare: child axis (Stylesheet 1), descendant axis (Stylesheet 2), parent axis (Stylesheet 3), ancestor axis (Stylesheet 4), following-sibling axis (Stylesheet 5), preceding-sibling axis (Stylesheet 6), following axis (Stylesheet 7), preceding axis (Stylesheet 8), attribute axis (Stylesheet 9), namespace axis (Stylesheet 10), self axis (Stylesheet 11), descendant-or-self axis (Stylesheet 12), ancestor-or-self axis (Stylesheet 13).


     XML     HOME     XSL 1     XSL 2     XSL 3     XSL 4     XSL 5     XSL 6     XSL 7     XSL 8     XSL 9     XSL 10     XSL 11     XSL 12     XSL 13      
<xslTutorial >
<AAA id='a1' pos='start'>
     <BBB  id='b1'/>
     <BBB  id='b2'/>
</AAA>
<AAA  id='a2'>
     <BBB  id='b3'/>
     <BBB  id='b4'/>
     <CCC  id='c1'>
          <CCC  id='c2'/>
     </CCC>
     <BBB  id='b5'>
          <CCC  id='c3'/>
     </BBB>
</AAA>
</xslTutorial>

     XSL 1     HOME     XML     HTML 1     OUTPUT 1     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: child</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="child::*">
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 1     HOME     XML     XSL 1     OUTPUT 1     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: child</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>b1 b2 </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD/></TR>
<TR>
<TD>BBB id = b2</TD>
<TD/></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>b3 b4 c1 b5 </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD/></TR>
<TR>
<TD>BBB id = b4</TD>
<TD/></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>c2 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD/></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>c3 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD/></TR></TABLE>

     OUTPUT 1     HOME     XML     XSL 1     HTML 1     
Axis: child
ElementNode-set
AAA id = a1b1 b2
BBB id = b1
BBB id = b2
AAA id = a2b3 b4 c1 b5
BBB id = b3
BBB id = b4
CCC id = c1c2
CCC id = c2
BBB id = b5c3
CCC id = c3

     XSL 2     HOME     XML     HTML 2     OUTPUT 2     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: descendant</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="descendant::*">
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 2     HOME     XML     XSL 2     OUTPUT 2     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: descendant</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>b1 b2 </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD/></TR>
<TR>
<TD>BBB id = b2</TD>
<TD/></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>b3 b4 c1 c2 b5 c3 </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD/></TR>
<TR>
<TD>BBB id = b4</TD>
<TD/></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>c2 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD/></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>c3 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD/></TR></TABLE>

     OUTPUT 2     HOME     XML     XSL 2     HTML 2     
Axis: descendant
ElementNode-set
AAA id = a1b1 b2
BBB id = b1
BBB id = b2
AAA id = a2b3 b4 c1 c2 b5 c3
BBB id = b3
BBB id = b4
CCC id = c1c2
CCC id = c2
BBB id = b5c3
CCC id = c3

     XSL 3     HOME     XML     HTML 3     OUTPUT 3     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: parent</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="parent::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 3     HOME     XML     XSL 3     OUTPUT 3     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: parent</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>xslTutorial </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>a1 </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>a1 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>xslTutorial </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>a2 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>a2 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>a2 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>c1 </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>a2 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD>b5 </TD></TR></TABLE>

     OUTPUT 3     HOME     XML     XSL 3     HTML 3     
Axis: parent
ElementNode-set
AAA id = a1xslTutorial
BBB id = b1a1
BBB id = b2a1
AAA id = a2xslTutorial
BBB id = b3a2
BBB id = b4a2
CCC id = c1a2
CCC id = c2c1
BBB id = b5a2
CCC id = c3b5

     XSL 4     HOME     XML     HTML 4     OUTPUT 4     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: ancestor</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="ancestor::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 4     HOME     XML     XSL 4     OUTPUT 4     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: ancestor</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>xslTutorial </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>xslTutorial a1 </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>xslTutorial a1 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>xslTutorial </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>xslTutorial a2 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>xslTutorial a2 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>xslTutorial a2 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>xslTutorial a2 c1 </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>xslTutorial a2 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD>xslTutorial a2 b5 </TD></TR></TABLE>

     OUTPUT 4     HOME     XML     XSL 4     HTML 4     
Axis: ancestor
ElementNode-set
AAA id = a1xslTutorial
BBB id = b1xslTutorial a1
BBB id = b2xslTutorial a1
AAA id = a2xslTutorial
BBB id = b3xslTutorial a2
BBB id = b4xslTutorial a2
CCC id = c1xslTutorial a2
CCC id = c2xslTutorial a2 c1
BBB id = b5xslTutorial a2
CCC id = c3xslTutorial a2 b5

     XSL 5     HOME     XML     HTML 5     OUTPUT 5     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: following-sibling</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="following-sibling::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 5     HOME     XML     XSL 5     OUTPUT 5     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: following-sibling</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>a2 </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>b2 </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD/></TR>
<TR>
<TD>AAA id = a2</TD>
<TD/></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>b4 c1 b5 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>c1 b5 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>b5 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD/></TR>
<TR>
<TD>BBB id = b5</TD>
<TD/></TR>
<TR>
<TD>CCC id = c3</TD>
<TD/></TR></TABLE>

     OUTPUT 5     HOME     XML     XSL 5     HTML 5     
Axis: following-sibling
ElementNode-set
AAA id = a1a2
BBB id = b1b2
BBB id = b2
AAA id = a2
BBB id = b3b4 c1 b5
BBB id = b4c1 b5
CCC id = c1b5
CCC id = c2
BBB id = b5
CCC id = c3

     XSL 6     HOME     XML     HTML 6     OUTPUT 6     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: preceding-sibling</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="preceding-sibling::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 6     HOME     XML     XSL 6     OUTPUT 6     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: preceding-sibling</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD/></TR>
<TR>
<TD>BBB id = b1</TD>
<TD/></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>b1 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>a1 </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD/></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>b3 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>b3 b4 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD/></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>b3 b4 c1 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD/></TR></TABLE>

     OUTPUT 6     HOME     XML     XSL 6     HTML 6     
Axis: preceding-sibling
ElementNode-set
AAA id = a1
BBB id = b1
BBB id = b2b1
AAA id = a2a1
BBB id = b3
BBB id = b4b3
CCC id = c1b3 b4
CCC id = c2
BBB id = b5b3 b4 c1
CCC id = c3

     XSL 7     HOME     XML     HTML 7     OUTPUT 7     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: following</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="following::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 7     HOME     XML     XSL 7     OUTPUT 7     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: following</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>a2 b3 b4 c1 c2 b5 c3 </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>b2 a2 b3 b4 c1 c2 b5 c3 </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>a2 b3 b4 c1 c2 b5 c3 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD/></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>b4 c1 c2 b5 c3 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>c1 c2 b5 c3 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>b5 c3 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>b5 c3 </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD/></TR>
<TR>
<TD>CCC id = c3</TD>
<TD/></TR></TABLE>

     OUTPUT 7     HOME     XML     XSL 7     HTML 7     
Axis: following
ElementNode-set
AAA id = a1a2 b3 b4 c1 c2 b5 c3
BBB id = b1b2 a2 b3 b4 c1 c2 b5 c3
BBB id = b2a2 b3 b4 c1 c2 b5 c3
AAA id = a2
BBB id = b3b4 c1 c2 b5 c3
BBB id = b4c1 c2 b5 c3
CCC id = c1b5 c3
CCC id = c2b5 c3
BBB id = b5
CCC id = c3

     XSL 8     HOME     XML     HTML 8     OUTPUT 8     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: preceding</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="preceding::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 8     HOME     XML     XSL 8     OUTPUT 8     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: preceding</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD/></TR>
<TR>
<TD>BBB id = b1</TD>
<TD/></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>b1 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>a1 b1 b2 </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>a1 b1 b2 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>a1 b1 b2 b3 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>a1 b1 b2 b3 b4 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>a1 b1 b2 b3 b4 </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>a1 b1 b2 b3 b4 c1 c2 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD>a1 b1 b2 b3 b4 c1 c2 </TD></TR></TABLE>

     OUTPUT 8     HOME     XML     XSL 8     HTML 8     
Axis: preceding
ElementNode-set
AAA id = a1
BBB id = b1
BBB id = b2b1
AAA id = a2a1 b1 b2
BBB id = b3a1 b1 b2
BBB id = b4a1 b1 b2 b3
CCC id = c1a1 b1 b2 b3 b4
CCC id = c2a1 b1 b2 b3 b4
BBB id = b5a1 b1 b2 b3 b4 c1 c2
CCC id = c3a1 b1 b2 b3 b4 c1 c2

     XSL 9     HOME     XML     HTML 9     OUTPUT 9     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: attribute</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="attribute::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 9     HOME     XML     XSL 9     OUTPUT 9     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: attribute</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>id pos </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>id </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>id </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>id </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>id </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>id </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>id </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>id </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>id </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD>id </TD></TR></TABLE>

     OUTPUT 9     HOME     XML     XSL 9     HTML 9     
Axis: attribute
ElementNode-set
AAA id = a1id pos
BBB id = b1id
BBB id = b2id
AAA id = a2id
BBB id = b3id
BBB id = b4id
CCC id = c1id
CCC id = c2id
BBB id = b5id
CCC id = c3id

     XSL 10     HOME     XML     HTML 10     OUTPUT 10     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: namespace</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="namespace::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 10     HOME     XML     XSL 10     OUTPUT 10     

     OUTPUT 10     HOME     XML     XSL 10     HTML 10     

     XSL 11     HOME     XML     HTML 11     OUTPUT 11     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: self</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="self::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 11     HOME     XML     XSL 11     OUTPUT 11     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: self</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>a1 </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>b1 </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>b2 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>a2 </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>b3 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>b4 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>c1 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>c2 </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>b5 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD>c3 </TD></TR></TABLE>

     OUTPUT 11     HOME     XML     XSL 11     HTML 11     
Axis: self
ElementNode-set
AAA id = a1a1
BBB id = b1b1
BBB id = b2b2
AAA id = a2a2
BBB id = b3b3
BBB id = b4b4
CCC id = c1c1
CCC id = c2c2
BBB id = b5b5
CCC id = c3c3

     XSL 12     HOME     XML     HTML 12     OUTPUT 12     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: descendant-or-self</TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="descendant-or-self::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 12     HOME     XML     XSL 12     OUTPUT 12     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: descendant-or-self</TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>a1 b1 b2 </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>b1 </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>b2 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>a2 b3 b4 c1 c2 b5 c3 </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>b3 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>b4 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>c1 c2 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>c2 </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>b5 c3 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD>c3 </TD></TR></TABLE>

     OUTPUT 12     HOME     XML     XSL 12     HTML 12     
Axis: descendant-or-self
ElementNode-set
AAA id = a1a1 b1 b2
BBB id = b1b1
BBB id = b2b2
AAA id = a2a2 b3 b4 c1 c2 b5 c3
BBB id = b3b3
BBB id = b4b4
CCC id = c1c1 c2
CCC id = c2c2
BBB id = b5b5 c3
CCC id = c3c3

     XSL 13     HOME     XML     HTML 13     OUTPUT 13     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE border="1" cellpadding = "6">
<TR><TH colspan="2">Axis: ancestor-or-self </TH></TR>
<TR><TH>Element</TH><TH>Node-set</TH></TR>
<xsl:for-each select="/xslTutorial//*">
<xsl:call-template name="print"/>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template name="print">
<TR>
<TD>
<xsl:value-of select="name()"/>
<xsl:text> id = </xsl:text>
<xsl:value-of select="./@id"/>
</TD><TD>
<xsl:for-each select="ancestor-or-self::*">
<xsl:if test="not(@id)">
<xsl:value-of select="name()"/>
</xsl:if>
<xsl:value-of select="./@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

     HTML 13     HOME     XML     XSL 13     OUTPUT 13     
<?xml version="1.0" encoding="utf-8"?>
<TABLE border="1" cellpadding="6">
<TR>
<TH colspan="2">Axis: ancestor-or-self </TH></TR>
<TR>
<TH>Element</TH>
<TH>Node-set</TH></TR>
<TR>
<TD>AAA id = a1</TD>
<TD>xslTutorial a1 </TD></TR>
<TR>
<TD>BBB id = b1</TD>
<TD>xslTutorial a1 b1 </TD></TR>
<TR>
<TD>BBB id = b2</TD>
<TD>xslTutorial a1 b2 </TD></TR>
<TR>
<TD>AAA id = a2</TD>
<TD>xslTutorial a2 </TD></TR>
<TR>
<TD>BBB id = b3</TD>
<TD>xslTutorial a2 b3 </TD></TR>
<TR>
<TD>BBB id = b4</TD>
<TD>xslTutorial a2 b4 </TD></TR>
<TR>
<TD>CCC id = c1</TD>
<TD>xslTutorial a2 c1 </TD></TR>
<TR>
<TD>CCC id = c2</TD>
<TD>xslTutorial a2 c1 c2 </TD></TR>
<TR>
<TD>BBB id = b5</TD>
<TD>xslTutorial a2 b5 </TD></TR>
<TR>
<TD>CCC id = c3</TD>
<TD>xslTutorial a2 b5 c3 </TD></TR></TABLE>

     OUTPUT 13     HOME     XML     XSL 13     HTML 13     
Axis: ancestor-or-self
ElementNode-set
AAA id = a1xslTutorial a1
BBB id = b1xslTutorial a1 b1
BBB id = b2xslTutorial a1 b2
AAA id = a2xslTutorial a2
BBB id = b3xslTutorial a2 b3
BBB id = b4xslTutorial a2 b4
CCC id = c1xslTutorial a2 c1
CCC id = c2xslTutorial a2 c1 c2
BBB id = b5xslTutorial a2 b5
CCC id = c3xslTutorial a2 b5 c3