c3d2-web/xsl/xhtml.xsl

420 lines
15 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
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#"
exclude-result-prefixes="xsl rss rdf">
<!-- Hilfsfunktionen für das Ausrechnen -->
<xsl:template name="get-year">
<!--
Von Astro übersetzt aus
#define DIV(a, b) ((a) / (b) - ((a) % (b) < 0))
#define LEAPS_THRU_END_OF(y) (DIV (y, 4) - DIV (y, 100) + DIV (y, 400))
while (days < 0 || days >= (__isleap (y) ? 366 : 365))
{
/* Guess a corrected year, assuming 365 days per year. */
long int yg = y + days / 365 - (days % 365 < 0);
/* Adjust DAYS and Y to match the guessed year. */
days -= ((yg - y) * 365
+ LEAPS_THRU_END_OF (yg - 1)
- LEAPS_THRU_END_OF (y - 1));
y = yg;
}
nach
int y(y, days)
{
if (days < 0 || days >= (__isleap (y) ? 366 : 365))
{
long int yg = y + days / 365 - (days % 365 < 0);
days -= ((yg - y) * 365
+ LEAPS_THRU_END_OF (yg - 1)
- LEAPS_THRU_END_OF (y - 1));
return(y(yg, days));
}
else
return(y);
}
.
Von toidinamai übersetzt nach XSL.
-->
<xsl:param name="days" select="0"/>
<xsl:param name="year" select="0"/>
<!-- Guess a corrected year, assuming 365 days per year. -->
<xsl:variable name="yearguessed">
<xsl:choose>
<xsl:when test="days mod 365 &lt; 0">
<xsl:value-of select="$year + floor(days div 365) - 1" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$year + floor(days div 365)" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Adjust DAYS and Y to match the guessed year. -->
<xsl:variable name="daysadjusted">
<xsl:value-of select="(($yearguessed - $year) * 365
+ LEAPS_THRU_END_OF (yearguessed - 1)
- LEAPS_THRU_END_OF (y - 1) )" />
</xsl:variable>
<xsl:choose>
<xsl:when test="((year) mod 4 = 0 and ((year) mod 100 != 0 or (year) mod 400 = 0))">
<xsl:choose>
<xsl:when test="days &lt; 0 or days >= 366">
<xsl:call-template name="get-year">
<xsl:with-param name="year" select="yearguessed" />
<xsl:with-param name="days" select="daysadjusted" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$year" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="days &lt; 0 or days &gt;= 365">
<xsl:call-template name="get-year">
<xsl:with-param name="year" select="yearguessed" />
<xsl:with-param name="days" select="daysadjusted" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$year" />
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:output method="xml"
version="1.0"
encoding="utf-8"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="DTD/xhtml1-strict.dtd"
indent="yes"/>
<xsl:template match="/page">
<xsl:element name="html">
<!--xsl:attribute name="xmlns">http://www.w3.org/1999/xhtml</xsl:attribute-->
<xsl:attribute name="lang">de</xsl:attribute>
<xsl:attribute name="xml:lang">de</xsl:attribute>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!--
### Header ###
-->
<meta name="description" content="&lt;&lt;&lt;/&gt;&gt; c3d2, der Erfahrungsaustauschkreis aus dem sächsischen Dresden" />
<meta name="keywords" content="c3d2 ccc dresden sachsen hacker" />
<meta name="robots" content="index,follow" />
<meta name="language" content="de" />
<meta name="author" content="Fnordic walker" />
<meta name="date" content="Jan 1 1970" />
<meta name="DC.Creator" content="Fnordic walker" />
<meta name="DC.Description" content="&lt;&lt;&lt;/&gt;&gt; c3d2, der Erfahrungsaustauschkreis aus dem sächsischen Dresden" />
<meta name="DC.Publisher" content="Chaos Computer Club Dresden" />
<meta name="DC.Date" content="Jan 1 1970" />
<meta name="DC.Type" content="Text" />
<meta name="DC.Format" content="text/html" />
<meta name="DC.Language" content="de" />
<meta name="DC.Coverage" content="Dresden" />
<meta name="DC.Title" content="c3d2: Chaos Computer Club Dresden" />
<link rel="icon" href="" type="image/png" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="news-rss.xml" />
<link rel="stylesheet" title="Default" type="text/css" href="style/default.css" />
<title>&lt;&lt;&lt;/&gt;&gt; Chaos Computer Club Dresden | c3d2</title>
</head>
<body>
<div id="page">
<!--
### Logo ###
-->
<xsl:comment>
### Logo ###
</xsl:comment>
<div id="logo">
<h1>&lt;&lt;&lt;/&gt;&gt; Chaos Computer Club Dresden | c3d2</h1>
</div>
<div id="body">
<!--
### Navigation ###
-->
<xsl:comment>
### Navigation ###
</xsl:comment>
<div id="navigation">
<!--
### Search ###
-->
<xsl:comment>
### Search ###
</xsl:comment>
<form action="http://www.google.de/custom" method="get">
<p>
<input type="text" name="q" size="20" value="c3d2" />
<input type="hidden" name="domains" value="c3d2.de" />
<input type="hidden" name="sitesearch" value="www.c3d2.de" />
<input type="submit" name="submit" value="Suchen!" />
</p>
</form>
<ul>
<xsl:for-each select="document('../content/navigation.xml')/navigation/file">
<xsl:call-template name="navitem"><xsl:with-param name="file" select="."/></xsl:call-template>
</xsl:for-each>
</ul>
</div>
<!--
### Content ###
-->
<xsl:comment>
### Content ###
</xsl:comment>
<div id="content">
<h2>
<xsl:choose>
<xsl:when test="/page/@pagetitle">
<xsl:value-of select="/page/@pagetitle"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/page/@title"/>
</xsl:otherwise>
</xsl:choose>
</h2>
<xsl:apply-templates/>
</div>
<!--
### News ###
-->
<xsl:comment>
### News ###
</xsl:comment>
<div id="news">
<h2>
<xsl:element name="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"/>
</xsl:element>
</h2>
<ul>
<xsl:for-each select="document('../chaosupdates.rdf')/rdf:RDF/rss:item[position() &lt; 14]">
<li>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="rss:link"/>
</xsl:attribute>
<xsl:value-of select="rss:title"/>
</xsl:element>
</li>
</xsl:for-each>
</ul>
</div>
</div>
<!--
### Footer ###
-->
<xsl:comment>
### Footer ###
</xsl:comment>
<div id="footer">
<ul>
<li><a href="impressum.html">Impressum</a></li>
<li>
<!--
Creative Commons License
-->
<xsl:comment>
Creative Commons License
</xsl:comment>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/de/deed.de">
<img alt="Creative Commons License" src="http://creativecommons.org/images/public/somerights20.gif" title="Creative Commons Attribution-ShareAlike 2.0 Germany License" />
</a>
<xsl:comment>
&lt;rdf:RDF xmlns="http://web.resource.org/cc/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
&lt;Work rdf:about=""&gt;
&lt;dc:type rdf:resource="http://purl.org/dc/dcmitype/Interactive" /&gt;
&lt;license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/de/" /&gt;
&lt;/Work&gt;
&lt;License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/de/"&gt;
&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction" /&gt;
&lt;permits rdf:resource="http://web.resource.org/cc/Distribution" /&gt;
&lt;requires rdf:resource="http://web.resource.org/cc/Notice" /&gt;
&lt;requires rdf:resource="http://web.resource.org/cc/Attribution" /&gt;
&lt;permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /&gt;
&lt;requires rdf:resource="http://web.resource.org/cc/ShareAlike" /&gt;
&lt;/License&gt;
&lt;/rdf:RDF&gt;
</xsl:comment>
</li>
<li>
<a href="http://validator.w3.org/check?uri=referer">
<img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict" />
</a>
</li>
</ul>
<!-- <p id="update">
<strong>last update:</strong> 02/08/2005 15:15 CEST
</p> -->
</div>
<small class="hidden">
Cover, Concealment, Camouflage, Denial and Deception
</small>
</div>
</body>
</xsl:element>
</xsl:template>
<xsl:template match="news">
<xsl:for-each select="item">
<h3 class="news"><xsl:value-of select="@title"/></h3>
<small class="news_author">
<xsl:value-of select="@author"/>
</small>
<!-- Magie: Datum aus Unix-Timestamp noch Deutsch transformieren... -->
<xsl:variable name="date_days">
<xsl:value-of select="floor(@date div 604800)" />
</xsl:variable>
<xsl:variable name="date_dayofweek">
<xsl:value-of select="4 + $date_days mod 7"/>
</xsl:variable>
<xsl:variable name="date_hour">
<xsl:value-of select="format-number(floor(@date mod 86400 div 3600), '00')" />
</xsl:variable>
<xsl:variable name="date_minute">
<xsl:value-of select="format-number(floor(@date mod 3600 div 60), '00')" />
</xsl:variable>
<xsl:variable name="date_second">
<xsl:value-of select="format-number(floor(@date mod 60), '00')" />
</xsl:variable>
<xsl:variable name="date_dayofweekstring">
<xsl:choose>
<xsl:when test="$date_dayofweek = 0">Montag</xsl:when>
<xsl:when test="$date_dayofweek = 1">Dienstag</xsl:when>
<xsl:when test="$date_dayofweek = 2">Mittwoch</xsl:when>
<xsl:when test="$date_dayofweek = 3">Donnerstag</xsl:when>
<xsl:when test="$date_dayofweek = 4">Freitag</xsl:when>
<xsl:when test="$date_dayofweek = 5">Samstag</xsl:when>
<xsl:when test="$date_dayofweek = 6">Sonntag</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="date_dayofmonth">23</xsl:variable>
<xsl:variable name="date_month">11</xsl:variable>
<xsl:variable name="date_monthstring">
<xsl:choose>
<xsl:when test="$date_month = 0">Januar</xsl:when>
<xsl:when test="$date_month = 1">Februar</xsl:when>
<xsl:when test="$date_month = 2">März</xsl:when>
<xsl:when test="$date_month = 3">April</xsl:when>
<xsl:when test="$date_month = 4">Mai</xsl:when>
<xsl:when test="$date_month = 5">Juni</xsl:when>
<xsl:when test="$date_month = 6">Juli</xsl:when>
<xsl:when test="$date_month = 7">August</xsl:when>
<xsl:when test="$date_month = 8">September</xsl:when>
<xsl:when test="$date_month = 9">Oktober</xsl:when>
<xsl:when test="$date_month = 10">November</xsl:when>
<xsl:when test="$date_month = 11">Dezember</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="date_year">
<xsl:call-template name="get-year" />
</xsl:variable>
<xsl:variable name="datestring">
<xsl:value-of select="concat($date_dayofweekstring, ', ', $date_dayofmonth, '. ', $date_monthstring, ' ', $date_year, ' um ', $date_hour, ':', $date_minute, ':', $date_second)" />
</xsl:variable>
<xsl:element name="small">
<xsl:attribute name="class">news_date</xsl:attribute>
<!--
<xsl:attribute name="title"><xsl:value-of select="@date"/></xsl:attribute>
-->
@ <xsl:value-of select="$datestring"/>
</xsl:element>
<div class="news">
<xsl:apply-templates/>
</div>
<hr class="news"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="pre">
<pre><xsl:apply-templates/></pre>
</xsl:template>
<xsl:template match="p">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="image">
<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="."/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute>
<xsl:attribute name="alt"><xsl:value-of select="@title"/></xsl:attribute>
<xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute>
</xsl:element>
</xsl:template>
<xsl:template match="link">
<xsl:element name="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/>
</xsl:element>
</xsl:template>
<xsl:template match="em">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template name="navitem">
<xsl:param name="file"/>
<li>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="$file"/>.html</xsl:attribute>
<xsl:if test="document(concat('../content/', $file, '.xml'))/page/@pagetitle">
<xsl:attribute name="title"><xsl:value-of select="document(concat('../content/', $file, '.xml'))/page/@pagetitle"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="document(concat('../content/', $file, '.xml'))/page/@title"/>
</xsl:element>
</li>
</xsl:template>
</xsl:stylesheet>