Nic Miloslav     Example 59    KEYWORDS      EXAMPLES      AUTHORS     

Axis child:: can be be omitted from a location step as it is the default axis. Axis attribute:: can be abbreviatet to @. // is short for /descendant-or-self::, . is short for self:: and .. is short for parent::.


     XML     HOME     XSL 1     XSL 2     XSL 3      
<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="AAA">
<H3><xsl:value-of select="name()"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@id"/></H3>
<TABLE border="1">
<TR><TH>full</TH><TH>abbreviated</TH></TR>
<TR><TD>
<xsl:text> child::BBB/attribute::id</xsl:text>
</TD><TD>
<xsl:text> BBB/@id</xsl:text>
</TD></TR>
<TR><TD>
<xsl:value-of select="child::BBB/attribute::id"/>
</TD><TD>
<xsl:value-of select="BBB/@id"/>
</TD></TR>
</TABLE>
</xsl:template>
</xsl:stylesheet>

     HTML 1     HOME     XML     XSL 1     OUTPUT 1     
<H3>AAA a1</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>child::BBB/attribute::id</TD>
<TD>BBB/@id</TD></TR>
<TR>
<TD>b1</TD>
<TD>b1</TD></TR></TABLE>
<H3>AAA a2</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>child::BBB/attribute::id</TD>
<TD>BBB/@id</TD></TR>
<TR>
<TD>b3</TD>
<TD>b3</TD></TR></TABLE>

     OUTPUT 1     HOME     XML     XSL 1     HTML 1     

AAA a1

fullabbreviated
child::BBB/attribute::idBBB/@id
b1b1

AAA a2

fullabbreviated
child::BBB/attribute::idBBB/@id
b3b3

     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="BBB">
<H3><xsl:value-of select="name()"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@id"/></H3>
<TABLE border="1">
<TR><TH>full</TH><TH>abbreviated</TH></TR>
<TR><TD>
<xsl:text> parent::*/attribute::id</xsl:text>
</TD><TD>
<xsl:text> ../@id</xsl:text>
</TD></TR>
<TR><TD>
<xsl:value-of select="parent::*/attribute::id"/>
</TD><TD>
<xsl:value-of select="../@id"/>
</TD></TR>
</TABLE>
</xsl:template>
</xsl:stylesheet>

     HTML 2     HOME     XML     XSL 2     OUTPUT 2     
<H3>BBB b1</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>parent::*/attribute::id</TD>
<TD>../@id</TD></TR>
<TR>
<TD>a1</TD>
<TD>a1</TD></TR></TABLE>
<H3>BBB b2</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>parent::*/attribute::id</TD>
<TD>../@id</TD></TR>
<TR>
<TD>a1</TD>
<TD>a1</TD></TR></TABLE>
<H3>BBB b3</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>parent::*/attribute::id</TD>
<TD>../@id</TD></TR>
<TR>
<TD>a2</TD>
<TD>a2</TD></TR></TABLE>
<H3>BBB b4</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>parent::*/attribute::id</TD>
<TD>../@id</TD></TR>
<TR>
<TD>a2</TD>
<TD>a2</TD></TR></TABLE>
<H3>BBB b5</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>parent::*/attribute::id</TD>
<TD>../@id</TD></TR>
<TR>
<TD>a2</TD>
<TD>a2</TD></TR></TABLE>

     OUTPUT 2     HOME     XML     XSL 2     HTML 2     

BBB b1

fullabbreviated
parent::*/attribute::id../@id
a1a1

BBB b2

fullabbreviated
parent::*/attribute::id../@id
a1a1

BBB b3

fullabbreviated
parent::*/attribute::id../@id
a2a2

BBB b4

fullabbreviated
parent::*/attribute::id../@id
a2a2

BBB b5

fullabbreviated
parent::*/attribute::id../@id
a2a2

     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="CCC">
<H3><xsl:value-of select="name()"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@id"/></H3>
<TABLE border="1">
<TR><TH>full</TH><TH>abbreviated</TH></TR>
<TR><TD>
<xsl:text> name(/descendant-or-self::*)</xsl:text>
</TD><TD>
<xsl:text> name(//*)</xsl:text>
</TD></TR>
<TR><TD>
<xsl:value-of select="name(/descendant-or-self::*)"/>
</TD><TD>
<xsl:value-of select="name(//*)"/>
</TD></TR>
</TABLE>
<xsl:apply-templates/ >
</xsl:template>
</xsl:stylesheet>

     HTML 3     HOME     XML     XSL 3     OUTPUT 3     
<H3>CCC c1</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>name(/descendant-or-self::*)</TD>
<TD>name(//*)</TD></TR>
<TR>
<TD>xslTutorial</TD>
<TD>xslTutorial</TD></TR></TABLE>
<H3>CCC c2</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>name(/descendant-or-self::*)</TD>
<TD>name(//*)</TD></TR>
<TR>
<TD>xslTutorial</TD>
<TD>xslTutorial</TD></TR></TABLE>
<H3>CCC c3</H3>
<TABLE border="1">
<TR>
<TH>full</TH>
<TH>abbreviated</TH></TR>
<TR>
<TD>name(/descendant-or-self::*)</TD>
<TD>name(//*)</TD></TR>
<TR>
<TD>xslTutorial</TD>
<TD>xslTutorial</TD></TR></TABLE>

     OUTPUT 3     HOME     XML     XSL 3     HTML 3     

CCC c1

fullabbreviated
name(/descendant-or-self::*)name(//*)
xslTutorialxslTutorial

CCC c2

fullabbreviated
name(/descendant-or-self::*)name(//*)
xslTutorialxslTutorial

CCC c3

fullabbreviated
name(/descendant-or-self::*)name(//*)
xslTutorialxslTutorial