c3d2-web/xsl/common.xsl

241 lines
6.7 KiB
XML

<?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">
<xsl:variable name="href">
<xsl:choose>
<xsl:when test="not(contains(@href, ':'))">
<xsl:value-of select="concat($baseurl,@href)"/>
</xsl:when>
<xsl:when test="@href">
<xsl:value-of select="@href"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a href="{$href}">
<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>
<xsl:template name="calendar-events">
<xsl:if test="document('../calendar-summary.xml')/page/calendar-summary/event[date:seconds(end) &gt;= date:seconds(date:date())]">
<div id="upcoming">
<h2>
<a href="calendar.html">Kalender</a>
</h2>
<ul>
<xsl:for-each select="document('../calendar-summary.xml')/page/calendar-summary/event[date:seconds(end) &gt;= date:seconds(date:date())]">
<xsl:sort select="date:seconds(start)" data-type="number" order="ascending" />
<li>
<xsl:call-template name="datespan-to-human">
<xsl:with-param name="start" select="start"/>
<xsl:with-param name="end" select="end"/>
</xsl:call-template>:
<a href="{link}">
<xsl:value-of select="title"/>
</a>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:if>
</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>