<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<!-- *********************************************************************** -->
<!-- 
 | Support for ACM_PROC_ARTICLE-SP.CLS - VERSION 2.6SP
 |         and ACM SIG-ALTERNATE.CLS - VERSION 1.6
 +-->
<xsl:template match="article[@class='acm_proc_article-sp' or @class='sig-alternate' or @class='sig-alternate-hack']">
\documentclass{<xsl:value-of select="@class"/>}
\begin{document}

<xsl:if test="toAppear">
\toappear{<xsl:apply-templates select="toAppear/node()"/>}
	</xsl:if>
<xsl:if test="copyright">
\copyrightetc{Copyright \the\copyrtyr\ <xsl:value-of select="copyright"/>}
	</xsl:if>
<!-- Dates and Conference Information-->
\CopyrightYear{<xsl:value-of select="date/year"/>}
\date{<xsl:value-of select="concat(date/day, ' ', date/month, ' ', date/year)"/>}
<xsl:if test="conference">
\conferenceinfo{<xsl:value-of select="conference/name"/>}{<xsl:value-of select="conference/info"/>}
	</xsl:if>

<!-- Build the title, subtitle, and various notes. -->
<xsl:text>\title{</xsl:text>
<xsl:apply-templates select="title/node()[name() != 'note']"/>
<xsl:if test="title/note">
	<xsl:text>\titlenote{</xsl:text>
	<xsl:apply-templates select="title/note/node()"/>
	<xsl:text>}</xsl:text>
	</xsl:if>
<xsl:text>}&#xa;</xsl:text>
<xsl:if test="subtitle">
	<xsl:text>\subtitle{</xsl:text>
	<xsl:apply-templates select="subtitle/node()[name() != 'note']"/>
	<xsl:if test="subtitle/note">
		<xsl:text>\titlenote{</xsl:text>
		<xsl:apply-templates select="subtitle/note/node()"/>
		<xsl:text>}</xsl:text>
		</xsl:if>
	<xsl:text>}&#xa;</xsl:text>
	</xsl:if>

<!-- Build the authors. The sig-alternate style can fit three authors
     on the front page.
  -->
\numberofauthors{<xsl:value-of select="count(author)"/>}
\author{
<xsl:for-each select="author[position() &lt; 4]">
	<xsl:text>\alignauthor </xsl:text>
	<xsl:apply-templates select="name/node()"/>
	<xsl:if test="note">
		<xsl:text>\titlenote{</xsl:text>
		<xsl:apply-templates select="note/node()"/>
		<xsl:text>}</xsl:text>
		</xsl:if>

	<xsl:for-each select="affaddr">
		<xsl:text>\\&#xa;&#x9;\affaddr{</xsl:text>
		<xsl:apply-templates select="."/>
		<xsl:text>}</xsl:text>
		</xsl:for-each>

	<xsl:if test="email">
		<xsl:text>\\&#xa;&#x9;\email{</xsl:text>
		<xsl:apply-templates select="email/node()"/>
		<xsl:text>}</xsl:text>
		</xsl:if>

	<xsl:text>&#xa;</xsl:text>

	</xsl:for-each>
<xsl:text>}&#xa;</xsl:text>

<!-- If there are more than 3 authors, the sig-alternate style
     builds an 'Additional Authors' section at the end of the document.
     Here, we populate that section.
  -->
<!--
<xsl:if test="author[position() >= 4]">
<xsl:text>\additionalauthors{Additional authors: </xsl:text>
<xsl:for-each select="author[position() >= 4]">
	<xsl:choose>
		<xsl:when test="position() != 1 and position() != last()">
			<xsl:text>; </xsl:text>
			</xsl:when>
		<xsl:when test="position() != 1 and position() = last()">
			<xsl:text>; and </xsl:text>
			</xsl:when>
		</xsl:choose>
	<xsl:apply-templates select="name/node()"/>
	<xsl:if test="affaddr|email">
		<xsl:text> (</xsl:text>
		<xsl:apply-templates select="affaddr[1]"/>
		<xsl:if test="affaddr and email">, </xsl:if>
		<xsl:if test="email">
			<xsl:text>email: \texttt{</xsl:text>
			<xsl:apply-templates select="email/node()"/>
			<xsl:text>}</xsl:text>
			</xsl:if>
		<xsl:text>)</xsl:text>
		</xsl:if>
	</xsl:for-each>
<xsl:text>}&#xa;</xsl:text>
	</xsl:if>
-->
<xsl:if test="author[position() >= 4]">
<xsl:text>\additionalauthors{</xsl:text>
\begin{itemize}
<xsl:for-each select="author[position() >= 4]">
	<xsl:text>\item </xsl:text>
	<xsl:apply-templates select="name/node()"/>
	<xsl:text>\\&#xa;</xsl:text>
	<xsl:if test="affaddr">
		<xsl:apply-templates select="affaddr[1]"/>
		</xsl:if>
	<xsl:if test="affaddr and email">
		<xsl:text>\\&#xa;</xsl:text>
		</xsl:if>
	<xsl:if test="email">
		<xsl:text>email: \texttt{</xsl:text>
		<xsl:apply-templates select="email/node()"/>
		<xsl:text>}</xsl:text>
		</xsl:if>
	<xsl:choose>
		<xsl:when test="position() = last() - 1">
			<xsl:text>; and&#xa;</xsl:text>
			</xsl:when>
		<xsl:when test="position() != last()">
			<xsl:text>;&#xa;</xsl:text>
			</xsl:when>
		<xsl:otherwise>
			<xsl:text>.&#xa;</xsl:text>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:for-each>
<xsl:text>\end{itemize}}&#xa;</xsl:text>
	</xsl:if>


\maketitle

<!-- Build the article's Abstract -->
<xsl:if test="abstract">
\begin{abstract}
<xsl:apply-templates select="abstract/node()"/>
\end{abstract}
	</xsl:if>

<xsl:if test="keyword">
	<xsl:text>\keywords{</xsl:text>
	<xsl:for-each select="keyword">
		<xsl:if test="position() != 1">
			<xsl:text>, </xsl:text>
			</xsl:if>
		<xsl:apply-templates/>
		</xsl:for-each>
	<xsl:text>}&#xa;</xsl:text>
	</xsl:if>

<xsl:apply-templates select="section"/>

<xsl:if test="bibliography/*">
\bibliographystyle{abbrv}
<xsl:call-template name="build-bibliography"/>
	</xsl:if>

<xsl:if test="appendix">
\appendix
<xsl:apply-templates select="appendix/section"/>
	</xsl:if>

\end{document}
	</xsl:template>


</xsl:stylesheet>
