<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:rss="http://purl.org/rss/1.0/" 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:date="http://exslt.org/dates-and-times"
  exclude-result-prefixes="xsl rss rdf date">

  <xsl:template match="pre">
    <pre><xsl:apply-templates/></pre>
  </xsl:template>

  <xsl:template match="p">
    <xsl:if test="@title">
      <h3>
        <xsl:value-of select="@title"/>
      </h3>
    </xsl:if>
    <p class="{@class}">
      <xsl:apply-templates/>
    </p>
  </xsl:template>

  <xsl:template match="dl">
    <dl><xsl:apply-templates/></dl>
  </xsl:template>

  <xsl:template match="dh">
    <dt class="main"><xsl:apply-templates/></dt>
  </xsl:template>

  <xsl:template match="dt">
    <dt><xsl:apply-templates/></dt>
  </xsl:template>

  <xsl:template match="dd">
    <dd><xsl:apply-templates/></dd>
  </xsl:template>

  <xsl:template match="ul">
    <ul><xsl:apply-templates/></ul>
  </xsl:template>

  <xsl:template match="ol">
    <ol><xsl:apply-templates/></ol>
  </xsl:template>

  <xsl:template match="li">
    <li><xsl:apply-templates/></li>
  </xsl:template>

  <xsl:template match="image">
    <img
      src="{.}"
      title="{@title}"
      alt="{@title}"
      class="{@class}"/>
  </xsl:template>

  <xsl:template match="link">
    <a>
      <xsl:choose>
        <xsl:when test="@href">
          <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
        </xsl:when>
        <xsl:otherwise>
          <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
        </xsl:otherwise>
      </xsl:choose>

      <xsl:apply-templates/>
    </a>
  </xsl:template>

  <xsl:template match="em">
    <em>
      <xsl:value-of select="."/>
    </em>
  </xsl:template>

  <xsl:template match="addendum">
    <!--
         Wenn wir nicht in news/ oder anderem sind, dann
         zeige nicht vollen Newstext (<addendum/>)
     -->
    <xsl:if test="string-length($baseurl) &gt; 0">
      <xsl:apply-templates/>
    </xsl:if>
  </xsl:template>

  <!-- Resources gehören nicht zum generellen Artikeltext
       und kommen explizit danach -->
  <xsl:template match="resource"/>

  <xsl:template name="navitem">
    <xsl:param name="file"/>
    <xsl:param name="baseurl"/>
    <xsl:param name="title"/>
    <li>
      <a href="{$baseurl}{$file}.html">
        <xsl:choose>
          <xsl:when test="string-length($title) = 0">
            <xsl:if test="document(concat('../content/pages/', $file, '.xml'))/page/@pagetitle">
              <xsl:attribute name="title"><xsl:value-of select="document(concat('../content/pages/', $file, '.xml'))/page/@pagetitle"/></xsl:attribute>
            </xsl:if>

            <xsl:value-of select="document(concat('../content/pages/', $file, '.xml'))/page/@title"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$title"/>
          </xsl:otherwise>
        </xsl:choose>
      </a>
    </li>
  </xsl:template>

  <xsl:template name="navitems">
     <ul>
       <xsl:for-each select="document('../content/navigation.xml')/navigation/file">
         <xsl:call-template name="navitem">
           <xsl:with-param name="file" select="."/>
           <xsl:with-param name="title" select="@title"/>
           <xsl:with-param name="baseurl" select="$baseurl"/>
         </xsl:call-template>
       </xsl:for-each>
     </ul>
  </xsl:template>

  <xsl:template name="chaosupdates">
  <div id="news">
    <h2>
      <a>
        <xsl:attribute name="href">
          <xsl:value-of select="document('../chaosupdates.rdf')/rdf:RDF/rss:channel/rss:link"/>
        </xsl:attribute>

        <xsl:value-of select="document('../chaosupdates.rdf')/rdf:RDF/rss:channel/rss:title"/>
      </a>
    </h2>
    <ul>
      <xsl:for-each select="document('../chaosupdates.rdf')/rdf:RDF/rss:item[position() &lt; 14]">
        <li>
          <a>
            <xsl:attribute name="href">
              <xsl:value-of select="rss:link"/>
            </xsl:attribute>
            <xsl:value-of select="rss:title"/>
          </a>
        </li>
      </xsl:for-each>
    </ul>
  </div> <!-- id="news" -->
  </xsl:template>

  <!-- Support für <event/> bzw. Microformats -->
  <xsl:include href="date.xsl" />
  <xsl:template match="item/event/start">
    <xsl:variable name="date" select="."/>

    <dl>
      <dt>
        <xsl:choose>
          <xsl:when test="../end">Beginn</xsl:when>
          <xsl:otherwise>Datum</xsl:otherwise>
        </xsl:choose>
      </dt>
      <dd>
        <abbr class="dtstart">
          <xsl:attribute name="title">
            <xsl:call-template name="date-to-hevent">
              <xsl:with-param name="date" select="$date"/>
            </xsl:call-template>
          </xsl:attribute>

          <xsl:call-template name="get-datestring">
            <xsl:with-param name="date" select="$date"/>
          </xsl:call-template>
        </abbr>
      </dd>
    </dl>
  </xsl:template>
  <xsl:template match="item/event/end">
    <xsl:variable name="date" select="."/>

    <dl>
      <dt>Ende</dt>
      <dd>
        <abbr class="dtend">
          <xsl:attribute name="title">
            <xsl:call-template name="date-to-hevent">
              <xsl:with-param name="date" select="$date"/>
            </xsl:call-template>
          </xsl:attribute>

          <xsl:call-template name="get-datestring">
            <xsl:with-param name="date" select="$date"/>
          </xsl:call-template>
        </abbr>
      </dd>
    </dl>
  </xsl:template>
  <xsl:template match="item/event/location">
    <dl>
      <dt>Ort</dt>
      <dd class="location"><xsl:apply-templates/></dd>
    </dl>
  </xsl:template>

</xsl:stylesheet>
