420 lines
15 KiB
XML
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 < 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 < 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 < 0 or days >= 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="<<</>> 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="<<</>> 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><<</>> Chaos Computer Club Dresden | c3d2</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<div id="page">
|
|
<!--
|
|
### Logo ###
|
|
-->
|
|
<xsl:comment>
|
|
### Logo ###
|
|
</xsl:comment>
|
|
<div id="logo">
|
|
<h1><<</>> 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() < 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>
|
|
<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#">
|
|
<Work rdf:about="">
|
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/Interactive" />
|
|
<license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/de/" />
|
|
</Work>
|
|
|
|
<License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/de/">
|
|
<permits rdf:resource="http://web.resource.org/cc/Reproduction" />
|
|
<permits rdf:resource="http://web.resource.org/cc/Distribution" />
|
|
<requires rdf:resource="http://web.resource.org/cc/Notice" />
|
|
<requires rdf:resource="http://web.resource.org/cc/Attribution" />
|
|
<permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
|
<requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
|
</License>
|
|
</rdf:RDF>
|
|
</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>
|