XML Source
==========
<!DOCTYPE source [
<!ELEMENT xslTutorial (
doc,note*)>
<!ELEMENT doc (#PCDATA|ref)*>
<!ELEMENT ref EMPTY>
<!ATTLIST ref id IDREF #REQUIRED>
<!ELEMENT note (#PCDATA)>
<!ATTLIST note id ID #REQUIRED>
]>
<source>
<doc> This text
<ref id="n3"/> demonstrates
<ref id="n1"/> a possible usage of id function
<ref id="n2"/>.
</doc>
<note id="n1">Note n1</note>
<note id="n2">Note n2</note>
<note id="n3">Note n3</note>
</source>
XSLT stylesheet
===============
<xsl:stylesheet version = '1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl

utput method="html"/>
<xsl:template match="/">
<xsl:apply-templates select="//doc"/>
<HR/>
<xsl:for-each select="//ref">
<xsl:apply-templates select="id(@id)">
<xsl:with-param name="nmbr">
<xsl:value-of select="position()"/>
</xsl:with-param>
</xsl:apply-templates>
</xsl:for-each>
</xsl:template>
<xsl:template match="ref">
<SUP>
<xsl:value-of select="count(//doc/*) - count(following::ref)"/>
</SUP>
</xsl:template>
<xsl:template match="note">
<xsl

aram name="nmbr">1</xsl

aram>
<DIV>
<xsl:number value="$nmbr" format="1. "/>
<xsl:value-of select="."/>
</DIV>
</xsl:template>
</xsl:stylesheet>
If we apply the above XSLT on the XML, we will get the following output(HTML).
This text 1 demonstrates 2 a possible usage of id function 3.
--------------------------------------------------------------------------------
1. Note n3
2. Note n1
3. Note n2
Can somebody explain the flow, how the template matching taking place. This example which is given in zvon really confused me. Thanks. Rajan