<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
		Transforms RSS documents into BBXML messages for display on Betabrite signs.
		http://pobox.com/~dfranklin/bbxml/index.html
		Author: Darin Franklin <dfranklin@pobox.com>
	-->
<xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdf09="http://my.netscape.com/rdf/simple/0.9/"
   xmlns:rss10="http://purl.org/rss/1.0/"
   xmlns:a="urn:bbxml:rss:lookup"
   exclude-result-prefixes="rdf rdf09 a rss10"
   >
  <xsl:output method="xml"/>
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <!-- suppress default output -->
  <xsl:template match="text()|@*"/>

  <xsl:param name="label">A</xsl:param>
  <xsl:param name="maxitems">10</xsl:param>
  <xsl:param name="color"></xsl:param>
  <xsl:param name="minPubDate"></xsl:param>

  <xsl:template name="lpad">
    <xsl:param name="str"/>
    <xsl:param name="len"/>
    <xsl:param name="chr"/>
    <xsl:choose>
      <xsl:when test="string-length($str) &lt; $len">
				<xsl:call-template name="lpad">
					<xsl:with-param name="str" select="concat($chr, $str)"/>
					<xsl:with-param name="len" select="$len"/>
					<xsl:with-param name="chr" select="$chr"/>
				</xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
				<xsl:value-of select="$str"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>


  <!-- RDF 1.0 -->

  <xsl:template match="/rdf:RDF[rss10:channel]">
    <xsl:element name="alphasign">
      <xsl:apply-templates select="rss10:channel"/>
    </xsl:element>
  </xsl:template>

  <xsl:template match="rss10:channel">
    <xsl:element name="text">
      <xsl:attribute name="label"><xsl:value-of select="$label"/></xsl:attribute>
      <xsl:attribute name="mode">rotate</xsl:attribute>
      <xsl:if test="string-length($color) &gt; 0">
				<xsl:element name="{$color}"/>
      </xsl:if>
      <xsl:text>&#10;</xsl:text>
      <xsl:element name="msg">
				<xsl:element name="fancy7"/>
				<xsl:value-of select="rss10:title"/>
				<xsl:text>: </xsl:text>
				<xsl:element name="standard7"/>
      </xsl:element>
			<xsl:text>&#10;</xsl:text>
      <xsl:apply-templates select="/rdf:RDF/rss10:item[position() &lt;= $maxitems]"/>
    </xsl:element>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>

  <xsl:template match="/rdf:RDF/rss10:item">
    <xsl:element name="msg">
      <xsl:value-of select="rss10:title"/>
      <xsl:text>   </xsl:text>
    </xsl:element>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>


  <!-- RSS -->

  <xsl:template match="/rss">
    <xsl:element name="alphasign">
      <xsl:apply-templates select="channel"/>
    </xsl:element>
  </xsl:template>

  <xsl:template match="/rss/channel">
    <xsl:element name="text">
      <xsl:attribute name="label"><xsl:value-of select="$label"/></xsl:attribute>
      <xsl:attribute name="mode">rotate</xsl:attribute>
      <xsl:if test="string-length($color) &gt; 0">
				<xsl:element name="{$color}"/>
      </xsl:if>
      <xsl:text>&#10;</xsl:text>
      <xsl:element name="msg">
				<xsl:element name="fancy7"/>
				<xsl:value-of select="title"/>
				<xsl:text>: </xsl:text>
				<xsl:element name="standard7"/>
      </xsl:element>
			<xsl:text>&#10;</xsl:text>
      <xsl:apply-templates select="item[position() &lt;= $maxitems]"/>
    </xsl:element>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>

  <xsl:template match="/rss/channel/item">
    <xsl:variable name="pubDate">
      <xsl:apply-templates select="pubDate"/>
    </xsl:variable>
    <xsl:if test="not(number($pubDate) &lt; number($minPubDate))">
      <xsl:element name="msg">
				<xsl:value-of select="title"/>
				<xsl:text>   </xsl:text>
      </xsl:element>
      <xsl:text>&#10;</xsl:text>
    </xsl:if>
  </xsl:template>

  <xsl:template match="/rss/channel/item/pubDate">
    <!-- Thu, 21 Jul 2005 12:00:00 GMT -->
    <!-- Thu, 1 Jul 2005 12:00:00 GMT -->
    <!-- Thu, 1 Jul 2005 2:00:00 GMT -->
    <xsl:variable name="dd">
      <xsl:call-template name="lpad">
				<xsl:with-param name="str">
					<xsl:value-of select="normalize-space(substring(.,6,2))"/>
				</xsl:with-param>
				<xsl:with-param name="len">2</xsl:with-param>
				<xsl:with-param name="chr">0</xsl:with-param>
      </xsl:call-template>
    </xsl:variable>
    <xsl:value-of
       select="concat(
							 normalize-space(substring(.,12,5))
							 , document('')//a:monthLookup/a:month[@name = normalize-space(substring(current(),8,4))]/@value
							 , $dd
							 )
							 "/>
    <!-- 20050721 -->
    <!-- 20050701 -->
  </xsl:template>

  <a:monthLookup>
    <a:month name="Jan" value="01"/>
    <a:month name="Feb" value="02"/>
    <a:month name="Mar" value="03"/>
    <a:month name="Apr" value="04"/>
    <a:month name="May" value="05"/>
    <a:month name="Jun" value="06"/>
    <a:month name="Jul" value="07"/>
    <a:month name="Aug" value="08"/>
    <a:month name="Sep" value="09"/>
    <a:month name="Oct" value="10"/>
    <a:month name="Nov" value="11"/>
    <a:month name="Dec" value="12"/>
  </a:monthLookup>


</xsl:stylesheet>
