doc/en/news/oldnewsflash.xsl
Hiroki Sato 925e309a67 Improve transtable.{xml,xsl}, including:
- The structure of transtable.xml is revised.  <word> should be
   bracketed with <group>.

 - A sorting order of the FreeBSD mirror sites rendered using
   mirrors.xml has been determined by sort(1).

 - A template "transtable-lookup" has been added for localization on
   word-by-word basis.

 - Replace English month names in news.xml, press.xml, and
   advisories.xml with numbers that correspond to the names.
   The number->name translation is performed on the fly.

 - Since information in mirrors.xml is used in www/ tree, it depends on
   doc/ tree now.  When WITHOUT_DOC is defined it can be built without
   doc/ tree, but some information becomes unavailable.  For example,
   a list of the mirror sites generated in index.html becomes a dummy
   one, and calling "transtable-lookup" with a word returns the word
   itself.

Neither www/ nor doc/ build should be broken due to this commit, but
until the necessary changes are applied in the localized directories,
the transtable does not work; it simply generates non-localized contents
even if transtable.xsl is used.
2004-01-12 21:27:01 +00:00

120 lines
3.7 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- $FreeBSD: www/en/news/oldnewsflash.xsl,v 1.5 2002/02/12 08:41:37 sobomax Exp $ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:cvs="http://www.FreeBSD.org/XML/CVS">
<xsl:import href="../includes.xsl"/>
<xsl:import href="includes.xsl"/>
<xsl:variable name="year">
<xsl:value-of select="descendant::year/name"/>
</xsl:variable>
<xsl:variable name="base" select="'../..'"/>
<xsl:variable name="title" select="concat('FreeBSD News Flash (', $year, ')')"/>
<!-- <xsl:variable name="title" select="$year"/> -->
<xsl:variable name="date">
<xsl:value-of select="//cvs:keyword[@name='freebsd']"/>
</xsl:variable>
<xsl:output type="html" encoding="iso-8859-1"/>
<xsl:template match="news">
<html>
<xsl:copy-of select="$header1"/>
<body xsl:use-attribute-sets="att.body">
<xsl:copy-of select="$header2"/>
<!-- Notice how entity references in SGML become variable references
in the stylesheet, and that the syntax for referring to variables
inside an attribute is "{$variable}".
This is just dis-similar enough to Perl and the shell that you
end up writing ${variable} all the time, and then scratch your
head wondering why the stylesheet isn't working.-->
<!-- Also notice that because this is now XML and not SGML, empty
elements, like IMG, must have a trailing "/" just inside the
closing angle bracket, like this " ... />" -->
<img src="{$base}/gifs/news.jpg" align="right" border="0" width="193"
height="144" alt="FreeBSD News"/>
<xsl:apply-templates select="descendant::month"/>
<xsl:copy-of select="$newshome"/>
<xsl:copy-of select="$footer"/>
</body>
</html>
</xsl:template>
<!-- Everything that follows are templates for the rest of the content -->
<xsl:template match="month">
<h1>
<xsl:call-template name="transtable-lookup">
<xsl:with-param name="word-group" select="'number-month'" />
<xsl:with-param name="word">
<xsl:value-of select="name"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:value-of select="ancestor::year/name"/></h1>
<ul>
<xsl:apply-templates select="descendant::day"/>
</ul>
</xsl:template>
<xsl:template match="day">
<xsl:apply-templates select="event"/>
</xsl:template>
<xsl:template match="event">
<li><p><a>
<xsl:attribute name="name">
<xsl:call-template name="generate-event-anchor"/>
</xsl:attribute>
</a>
<b><xsl:value-of select="ancestor::day/name"/>
<xsl:text> </xsl:text>
<xsl:call-template name="transtable-lookup">
<xsl:with-param name="word-group" select="'number-month'" />
<xsl:with-param name="word">
<xsl:value-of select="ancestor::month/name"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text>, </xsl:text>
<xsl:value-of select="ancestor::year/name"/>:</b><xsl:text> </xsl:text>
<xsl:apply-templates select="p"/>
</p>
</li>
</xsl:template>
<xsl:template match="date"/> <!-- Deliberately left blank -->
<!-- When the href attribute contains a '$base', expand it to the current
value of the $base variable. -->
<!-- All your $base are belong to us. Ho ho ho -->
<xsl:template match="a">
<a><xsl:attribute name="href">
<xsl:choose>
<xsl:when test="contains(@href, '$base')">
<xsl:value-of select="concat(substring-before(@href, '$base'), $base, substring-after(@href, '$base'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@href"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:apply-templates/>
</a>
</xsl:template>
</xsl:stylesheet>