<?xml version="1.0" encoding="UTF-8"?>
<!--
 - Desc:    This file is part of the eCromedos document preparation system
 - Date:    2006/03/09
 - Author:  Tobias Koch (tkoch@ecromedos.net)
 - License: GNU General Public License, version 2
 - URL:     http://www.ecromedos.net
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!--
  - Print value of a named counter
-->
<xsl:template match="counter">
	<a name="{generate-id()}" id="{generate-id()}"></a>
	<xsl:call-template name="counter.prefix"/>
</xsl:template>


<!--
  - Get combined counter value
-->
<xsl:template name="counter.prefix">
	<xsl:variable name="name" select="@name"/>
	<xsl:choose>
		<xsl:when test="ancestor::chapter">
			<xsl:number count="chapter"/>
			<xsl:text>.</xsl:text>
			<xsl:variable name="id" select="generate-id(ancestor::chapter)"/>
			<xsl:number value="count(preceding::counter[
				generate-id(ancestor::chapter) = $id
				and @name = $name]) + 1"/>
		</xsl:when>
		<xsl:when test="ancestor::appendix">
			<xsl:number count="appendix" format="A"/>
			<xsl:text>.</xsl:text>
			<xsl:variable name="id" select="generate-id(ancestor::appendix)"/>
			<xsl:number value="count(preceding::counter[
				generate-id(ancestor::appendix) = $id
				and @name = $name]) + 1"/>
		</xsl:when>
		<xsl:when test="ancestor::section">
			<xsl:number count="section"/>
			<xsl:text>.</xsl:text>
			<xsl:variable name="id" select="generate-id(ancestor::section)"/>
			<xsl:number value="count(preceding::counter[
				generate-id(ancestor::section) = $id
				and @name = $name]) + 1"/>
		</xsl:when>
		<xsl:otherwise>
			<xsl:text>0.</xsl:text>
			<xsl:number value="count(
				preceding::counter/ancestor::*[name() = 'preface']) + 1"/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>


</xsl:stylesheet>
