transform for index.html and storting data.xml
This commit is contained in:
parent
90a4320282
commit
cc4a355cba
12
gen.sh
12
gen.sh
|
@ -1,3 +1,11 @@
|
|||
#!/usr/bin/env sh
|
||||
xsltproc --encoding utf-8 -o ds-feed.xml rss.xsl data.xml
|
||||
xsltproc --encoding iso-8859-1 -o download.html download.xsl data.xml
|
||||
test $# -eq 0 && {
|
||||
xsltproc --encoding utf-8 -o ds-feed.xml rss.xsl data.xml
|
||||
xsltproc --encoding iso-8859-1 -o download.html download.xsl data.xml
|
||||
xsltproc --encoding utf-8 -o index.html index.xsl data.xml
|
||||
exit 0
|
||||
}
|
||||
test "$1" = "sort" && {
|
||||
xsltproc --encoding utf-8 -o sorted.xml sort.xsl data.xml
|
||||
mv -i sorted.xml data.xml
|
||||
}
|
||||
|
|
|
@ -0,0 +1,311 @@
|
|||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" encoding="UTF-8" version="1.0">
|
||||
<xsl:output omit-xml-declaration="yes"/>
|
||||
|
||||
<xsl:template match="/schleudern">
|
||||
<xsl:variable name="limitelements">0</xsl:variable><!-- limit as integer, 0:no limit -->
|
||||
|
||||
<xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
|
||||
<xsl:element name="html">
|
||||
<xsl:attribute name="xml:lang">de</xsl:attribute>
|
||||
<xsl:attribute name="lang">de</xsl:attribute>
|
||||
<xsl:element name="head">
|
||||
<meta charset="utf-8"/>
|
||||
<title>Die Datenschleuder</title>
|
||||
<meta name="robots" content="index,follow"/>
|
||||
<link rel="schema.DC" href="http://purl.org/dc/terms/"/>
|
||||
<link rel="alternate" type="application/rss+xml" title="Datenschleuder als RSS-Feed abonnieren" href="ds-feed.xml"/>
|
||||
<meta name="dc.publisher" content="Chaos Computer Club" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<xsl:element name="style">
|
||||
<xsl:attribute name="type">text/css</xsl:attribute>
|
||||
<xsl:attribute name="media">screen,projection</xsl:attribute>
|
||||
<!--
|
||||
<xsl:attribute name="src">style.css</xsl:attribute>
|
||||
-->
|
||||
<xsl:text> @import "style.css";
|
||||
time { font-family: Arial, sans-serif; font-size: 10pt; }</xsl:text>
|
||||
</xsl:element>
|
||||
<!--
|
||||
<xsl:element name="style">
|
||||
<xsl:attribute name="type">text/css</xsl:attribute>
|
||||
<xsl:attribute name="media">all</xsl:attribute>
|
||||
</xsl:element>
|
||||
-->
|
||||
<!--
|
||||
<style type="text/css" media="screen,projection" src="style.css"/>
|
||||
-->
|
||||
<!--
|
||||
<style type="text/css">
|
||||
time { font-family: Arial, sans-serif !important; font-size: 12pt !important; }
|
||||
</style>
|
||||
-->
|
||||
</xsl:element>
|
||||
<xsl:element name="body">
|
||||
|
||||
<xsl:element name="p">
|
||||
<xsl:attribute name="id">top</xsl:attribute>
|
||||
<xsl:element name="img">
|
||||
<xsl:attribute name="src">i/ds_headline.gif</xsl:attribute>
|
||||
<xsl:attribute name="alt">Die Datenschleuder</xsl:attribute>
|
||||
</xsl:element><xsl:element name="br"/>
|
||||
<xsl:element name="img">
|
||||
<xsl:attribute name="src">i/ds_subline.gif</xsl:attribute>
|
||||
<xsl:attribute name="alt">Das wissenschaftliche Fachblatt für Datenreisende – Ein Organ des Chaos Computer Club</xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:element>
|
||||
<p>
|
||||
Die Datenschleuder | <a href="download.html">Download</a> | <a href="contact.html">Kontakt</a> | <a href="imprint.html">Impressum</a> | <a href="order.html">Bestellen</a>
|
||||
</p>
|
||||
|
||||
<xsl:element name="div">
|
||||
<xsl:attribute name="style">background: #dddddd; padding: 1px 15px 10px 15px;</xsl:attribute>
|
||||
|
||||
<xsl:element name="h2">
|
||||
Wir sind wieder da.
|
||||
</xsl:element><xsl:text>
</xsl:text>
|
||||
|
||||
<xsl:element name="div">
|
||||
<xsl:attribute name="style">float:right; margin-left: 10px; margin-right: 20px;</xsl:attribute>
|
||||
<xsl:element name="img">
|
||||
<xsl:attribute name="style">width: 140px;</xsl:attribute>
|
||||
<xsl:attribute name="src"><xsl:value-of select="schleuder[1]/image"/></xsl:attribute>
|
||||
<xsl:attribute name="alt">Die aktuelle Datenschleuder #<xsl:value-of select="schleuder[1]/@id"/></xsl:attribute>
|
||||
</xsl:element><xsl:text>
</xsl:text>
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="href">/pdfs/ds096.pdf</xsl:attribute>
|
||||
<xsl:element name="img">
|
||||
<xsl:attribute name="style">width: 140px;</xsl:attribute>
|
||||
<xsl:attribute name="src"><xsl:value-of select="schleuder[2]/image"/></xsl:attribute>
|
||||
<xsl:attribute name="alt">Die etwas ältere Datenschleuder #<xsl:value-of select="schleuder[2]/@id"/></xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:element>
|
||||
</xsl:element>
|
||||
|
||||
<xsl:text>
</xsl:text>
|
||||
<xsl:for-each select="schleuder">
|
||||
|
||||
<xsl:element name="p">
|
||||
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
<xsl:text>
</xsl:text>
|
||||
<xsl:for-each select="info">
|
||||
|
||||
<xsl:element name="time">
|
||||
<xsl:attribute name="datetime">
|
||||
<xsl:if test="not(@date)"><xsl:value-of select="date"/></xsl:if>
|
||||
<xsl:if test="count(@date)>0"><xsl:value-of select="@date"/></xsl:if>
|
||||
</xsl:attribute>
|
||||
<xsl:call-template name="GermanDate">
|
||||
<xsl:with-param name="EmailDate" select="@date" />
|
||||
</xsl:call-template>
|
||||
</xsl:element><br/><xsl:text>
</xsl:text>
|
||||
|
||||
<xsl:copy-of select="./node()" />
|
||||
<xsl:text>
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</xsl:element><xsl:text>
</xsl:text>
|
||||
|
||||
<!-- limit on last n elements -->
|
||||
<xsl:if test="(($limitelements = 0) or ((position() <= $limitelements) and ($limitelements > 0))) and (count(teaser) > 0)">
|
||||
|
||||
<xsl:element name="p">
|
||||
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
<xsl:text>
</xsl:text>
|
||||
|
||||
<xsl:element name="time">
|
||||
<xsl:attribute name="datetime">
|
||||
<xsl:if test="count(date) > 0">
|
||||
<xsl:value-of select="date"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="count(date) = 0">
|
||||
<xsl:value-of select="@date"/>
|
||||
</xsl:if>
|
||||
</xsl:attribute>
|
||||
<xsl:if test="count(date) > 0">
|
||||
<!--
|
||||
<xsl:value-of select="date"/>
|
||||
-->
|
||||
<xsl:call-template name="GermanDate">
|
||||
<xsl:with-param name="EmailDate" select="date" />
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
<xsl:if test="count(date) = 0">
|
||||
<!--
|
||||
<xsl:value-of select="@date"/>
|
||||
-->
|
||||
<xsl:call-template name="GermanDate">
|
||||
<xsl:with-param name="EmailDate" select="@date" />
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:element><br/><xsl:text>
</xsl:text>
|
||||
|
||||
<xsl:if test="count(teaser) > 0">
|
||||
<xsl:copy-of select="teaser/node()" />
|
||||
</xsl:if>
|
||||
<xsl:text>
</xsl:text>
|
||||
|
||||
</xsl:element><xsl:text>
</xsl:text>
|
||||
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- old stuff -->
|
||||
|
||||
<!--
|
||||
<p >
|
||||
<time datetime="2018-07-20">20. Juli 2018</time><br />
|
||||
Die 98. Ausgabe der Datenschleuder ist erschienen und auf dem Weg zu den Abonnenten.
|
||||
Sie ist wie immer im gut sortierten Buchhandel oder <a href="order.html">direkt vom CCC</a> auch als Einzelexemplar zu beziehen.<br />
|
||||
Zudem gibt es einen neuen Redaktions-PGP-Key, erhältlich auf allen Keyservern oder <a href="public-key.asc">hier.</a>
|
||||
</p>
|
||||
<p>
|
||||
<small>20. November 2014</small><br />
|
||||
Lange war es ruhig um die Datenschleuder. Fast schon zu lange. Daher freuen wir uns umso mehr, dass die Ausgabe 97 fertig gedruckt und auf dem Weg zu den Mitgliedern und Abonnenten ist. Wie üblich können Abonnements und Einzelausgaben <a href="order.html">direkt beim CCC</a> erworben werden.
|
||||
</p>
|
||||
<p>
|
||||
<small>3. Juni 2012</small><br />
|
||||
Es gibt einen neuen Redaktions-PGP-Key, erhältlich auf allen Keyservern oder <a href="public-key.asc">hier.</a>
|
||||
</p>
|
||||
<p>
|
||||
<small>18. Dezember 2011</small><br />
|
||||
Passend zum 28. Chaos Communication Congress ist die 96. Datenschleuder erschienen und befindet sich ATM auf dem Weg zu den Abonnenten. Wie immer gibt es zur Überbrückung der Wartezeit das <a href="096/editorial.html">Editorial online zum Selberausdrucken</a>.
|
||||
</p>
|
||||
<p>
|
||||
<small>7. September 2011</small><br />
|
||||
Aufgrund eines kleinen «Fuckups» wird die Datenschleuder bei den Abonnenten voraussichtlich. fünf. bis zehn Minu... äh, Tage später eintreffen. Wir bitten um Verständnis.
|
||||
</p>
|
||||
<p>
|
||||
<small>4. September 2011</small><br /> Nach längerer
|
||||
Wartezeit ist jetzt die 95. Ausgabe der Datenschleuder
|
||||
erschienen und auf dem Weg zu den Abonnenten. Sie ist wie
|
||||
immer im gut sortierten Buchhandel
|
||||
oder <a href="order.html">direkt vom CCC</a> auch als
|
||||
Einzelexemplar zu beziehen. Während Ihr auf Euer Exemplar
|
||||
wartet, lest doch solange <a href="095/editorial.html">das
|
||||
Editorial</a>.
|
||||
</p>
|
||||
<p>
|
||||
<small>18. März 2009</small><br /> Der Vorstand des CCC
|
||||
hat die Wiedereinführung der beliebten 8-Ausgaben
|
||||
Miniabos beschlossen. Details gibt
|
||||
es <a href="order.html">hier.</a>
|
||||
</p>
|
||||
<p>
|
||||
<small>17. Dezember 2008</small><br /> Pünktlich
|
||||
zum <a href="http://events.ccc.de/congress/2008/wiki/Main_Page/">25. Chaos
|
||||
Communication Congress</a> sollten die inzwischen fast 2800
|
||||
Mitglieder und Abonnenten ihre Datenschleuder im Briefkasten
|
||||
vorfinden. Schwerpunkte sind in dieser Ausgabe der
|
||||
dilettantische Umgang des BNDs mit ihren achsogeheimen Netzen
|
||||
und eine Analyse des XMPP-Protokolls nach kryptografischen
|
||||
Gesichtspunkten. Wie immer gibt es zum Schmökern neben
|
||||
der bereits
|
||||
veröffentlichten <a href="vorab/Sicherheitsleck_Infratest.pdf">Vorabmeldung</a>
|
||||
auch das <a href="093/editorial.html">Editorial</a> zum
|
||||
Internetausdrucken und vorm Kamin lesen.
|
||||
</p>
|
||||
<p>
|
||||
<small>29. März 2008</small><br /> Die 92. Ausgabe der
|
||||
Datenschleuder ist erschienen und auf dem Weg zu den
|
||||
Abonnenten. Als besonderes Gimmick liegt ihr dieses Mal eine
|
||||
Fingerattrappe nach dem Bild unseres geliebten Innenministers
|
||||
bei. Sie ist wie immer im gut sortierten Buchhandel
|
||||
oder <a href="order.html">direkt vom CCC</a> auch als
|
||||
Einzelexemplar zu beziehen. Während ihr auf Eure Ausgabe
|
||||
wartet, lest doch solange <a href="092/editorial.html">das
|
||||
Editorial</a>.
|
||||
</p>
|
||||
<p>
|
||||
<small>03. Oktober 2006</small><br /> Das Experiment ist
|
||||
beendet. Die Datenschleuder ist dank dem Einsatz hochmoderner
|
||||
Technologien (HTML) auf dem besten Wege, den dreijährigen
|
||||
Rückstand wieder aufzuholen. Redaktionssysteme sind im Prinzip
|
||||
in Ordnung. In der Praxis rockt jedoch vi.
|
||||
</p>
|
||||
-->
|
||||
<p>
|
||||
In der <a href="download.html">Download-Sektion</a> gibt es
|
||||
alle Datenschleudern, derer wir in der pdf-Version habhaft
|
||||
werden konnten, zum kostenlosen Herunterladen. Eventuelle Links
|
||||
zu einigen Artikeln sind kurzfristig hinüber, werden jedoch
|
||||
schnellstmöglich wieder hergestellt. Wir bitten um Geduld.
|
||||
</p>
|
||||
</xsl:element>
|
||||
<xsl:element name="p">
|
||||
<xsl:attribute name="style">text-align: right</xsl:attribute>
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="href">#top</xsl:attribute>
|
||||
top
|
||||
</xsl:element>
|
||||
</xsl:element>
|
||||
|
||||
</xsl:element><!-- /body -->
|
||||
</xsl:element><!-- /html -->
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="copycontent"><!-- match="@*|node()" matches all -->
|
||||
<xsl:copy><!-- copy subtree -->
|
||||
<xsl:apply-templates select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="GermanDate">
|
||||
<xsl:param name="EmailDate" />
|
||||
<xsl:param name="Date" />
|
||||
<xsl:param name="Year" />
|
||||
<xsl:param name="Month" />
|
||||
<xsl:param name="Day" />
|
||||
|
||||
<xsl:if test="not($EmailDate)"><!-- no date --></xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="not($Month)">
|
||||
<xsl:variable name="EmailMonth">
|
||||
<xsl:value-of select="substring($EmailDate,9,3)"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="GermanMonth">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$EmailMonth = 'Jan'">Januar</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Feb'">Februar</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Mar'">März</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Apr'">April</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'May'">Mai</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Jun'">Juni</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Jul'">Juli</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Aug'">August</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Sep'">September</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Oct'">Oktober</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Nov'">November</xsl:when>
|
||||
<xsl:when test="$EmailMonth = 'Dec'">Dezember</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:call-template name="GermanDate">
|
||||
<xsl:with-param name="Month" select="$GermanMonth" />
|
||||
<xsl:with-param name="EmailDate" select="$EmailDate" />
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="not($Day)"><!-- 'Thu, 02 May 2019 23:01:34 +0200' -->
|
||||
<xsl:variable name="EmailDay">
|
||||
<xsl:value-of select="floor(substring($EmailDate,6,2))"/>
|
||||
</xsl:variable>
|
||||
<xsl:call-template name="GermanDate">
|
||||
<xsl:with-param name="Month" select="$Month" />
|
||||
<xsl:with-param name="Day" select="$EmailDay" />
|
||||
<xsl:with-param name="EmailDate" select="$EmailDate" />
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="not($Year)">
|
||||
<xsl:variable name="EmailYear">
|
||||
<xsl:value-of select="substring($EmailDate,13,4)"/>
|
||||
</xsl:variable>
|
||||
<xsl:call-template name="GermanDate">
|
||||
<xsl:with-param name="Month" select="$Month" />
|
||||
<xsl:with-param name="Day" select="$Day" />
|
||||
<xsl:with-param name="Year" select="$EmailYear" />
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="concat($Day,'. ',$Month,' ',$Year)"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
|
@ -0,0 +1,81 @@
|
|||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" encoding="UTF-8" version="1.0">
|
||||
<xsl:output omit-xml-declaration="yes"/>
|
||||
|
||||
<xsl:template match="/schleudern">
|
||||
<xsl:text disable-output-escaping='yes'><?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE schleudern [
|
||||
|
||||
<!ELEMENT schleudern (schleuder)><!-- wrapper -->
|
||||
<!ELEMENT schleuder (date,image,link,filesize,teaser,preface,info)><!-- issue -->
|
||||
<!ATTLIST schleuder id CDATA #REQUIRED>
|
||||
<!ELEMENT date (#PCDATA)><!-- date of publication, https://www.w3.org/Protocols/rfc822/ as in cli `date -R` or 'Thu, 02 May 2019 23:01:34 +0200' -->
|
||||
<!ELEMENT image (#PCDATA)><!-- usually the cover page -->
|
||||
<!ELEMENT link (#PCDATA)><!-- file location or fallback link, here attachments for rss and linked files for download -->
|
||||
<!ATTLIST link filesize CDATA #IMPLIED><!-- attribute filesize for multiple attachments: as PDF, ePUB etc. -->
|
||||
<!ELEMENT filesize (#PCDATA)><!-- size of a single linked file, needed for attachments -->
|
||||
<!ELEMENT teaser (#PCDATA)><!-- short hint on recent print and newest issue online -->
|
||||
<!ELEMENT preface (#PCDATA)><!-- link to preface, html byproduct of ePUB workflow -->
|
||||
<!ELEMENT info (#PCDATA)><!-- short information in between two issues, added as child to the last published issue, newest first -->
|
||||
<!ATTLIST info date CDATA #IMPLIED><!-- date for information, if missing the date of the parent schleuder will be used -->
|
||||
|
||||
<!ENTITY PUBLISHER "Chaos Computer Club">
|
||||
|
||||
]>

|
||||
</xsl:text>
|
||||
<xsl:element name="schleudern"><xsl:text>
</xsl:text>
|
||||
|
||||
<!--
|
||||
<xsl:apply-templates select="//comment()[position()=2]"/>
|
||||
-->
|
||||
|
||||
<xsl:for-each select="schleuder">
|
||||
|
||||
<xsl:element name="schleuder">
|
||||
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute><xsl:text>
</xsl:text>
|
||||
<xsl:if test="count(date) > 0">
|
||||
<xsl:text>	</xsl:text><xsl:element name="date"><xsl:value-of select="date"/></xsl:element><xsl:text>
</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:text>	</xsl:text><xsl:element name="image"><xsl:value-of select="image"/></xsl:element><xsl:text>
</xsl:text>
|
||||
<xsl:for-each select="link">
|
||||
<xsl:text>	</xsl:text><xsl:element name="link">
|
||||
<xsl:if test="count(@filesize) > 0">
|
||||
<xsl:attribute name="filesize"><xsl:value-of select="@filesize"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:element><xsl:text>
</xsl:text>
|
||||
<!-- <xsl:if test="position() = 1">
|
||||
</xsl:if>-->
|
||||
</xsl:for-each>
|
||||
<xsl:if test="count(filesize) > 0">
|
||||
<xsl:text>	</xsl:text><xsl:element name="filesize"><xsl:value-of select="filesize"/></xsl:element><xsl:text>
</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:if test="count(teaser) > 0">
|
||||
<xsl:text>	</xsl:text>
|
||||
<xsl:apply-templates select="teaser"/>
|
||||
<xsl:text>
</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:if test="count(preface) > 0">
|
||||
<xsl:text>	</xsl:text><xsl:element name="preface">
|
||||
<xsl:value-of select="preface"/>
|
||||
</xsl:element><xsl:text>
</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="info">
|
||||
<xsl:text>	</xsl:text>
|
||||
<xsl:apply-templates select="."/>
|
||||
<xsl:text>
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</xsl:element>
|
||||
<xsl:text>
</xsl:text>
|
||||
|
||||
</xsl:for-each>
|
||||
|
||||
</xsl:element>
|
||||
</xsl:template>
|
||||
<xsl:template match="comment()"><xsl:comment><xsl:value-of select="."/></xsl:comment></xsl:template>
|
||||
<xsl:template match="@*|node()"><!-- matches all -->
|
||||
<xsl:copy><!-- copy subtree -->
|
||||
<xsl:apply-templates select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
Loading…
Reference in New Issue