<xslTutorial creator="nicmila@idoox.com">
<index keywords='id() position() xsl:with-param'/>

<description>An example of id function usage.
</description>

<dtd><!ELEMENT xslTutorial (doc,note*)>
<!ELEMENT doc (#PCDATA|ref)*>
<!ELEMENT  ref EMPTY>
<!ATTLIST ref id IDREF #REQUIRED>
<!ELEMENT note (#PCDATA)>
<!ATTLIST note id ID #REQUIRED>
</dtd>

<xmlSource id="id1">
<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>
</xmlSource>

<attValues>
<value match=''></value>
</attValues>

<xslStylesheet id="id2">
<xsl:output 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:param name="nmbr">1</xsl:param>
<DIV>
<xsl:number value="$nmbr" format="1. "/>
<xsl:value-of select="."/>
</DIV>
</xsl:template>

</xslStylesheet>

</xslTutorial>