PR: www/142437 Patch the website so that "Errata Notices" are available the same way as "Security Advisories": - RSS feed - Link from the frontpage - Own subpage - Available via navigation menu Initially suggested by: Jason Helfman (jhelfman ett e-e dott com) Patch provided by: John Baldwin (jhb@)
		
			
				
	
	
		
			1584 lines
		
	
	
	
		
			58 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			1584 lines
		
	
	
	
		
			58 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="ISO-8859-1" ?>
 | |
| <!DOCTYPE xsl:stylesheet PUBLIC "-//FreeBSD//DTD FreeBSD XSLT 1.0 DTD//EN"
 | |
| 				"http://www.FreeBSD.org/XML/www/share/sgml/xslt10-freebsd.dtd">
 | |
| <!-- $FreeBSD: www/share/sgml/libcommon.xsl,v 1.31 2010/04/09 10:09:05 jkois Exp $ -->
 | |
| 
 | |
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 | |
|   version="1.0"
 | |
|   xmlns:cvs="http://www.FreeBSD.org/XML/CVS"
 | |
|   xmlns:date="http://exslt.org/dates-and-times"
 | |
|   extension-element-prefixes="date"
 | |
|   exclude-result-prefixes="date cvs">
 | |
| 
 | |
|   <xsl:import href="./transtable-common.xsl" />
 | |
| 
 | |
|   <!-- default format for date string -->
 | |
|   <xsl:param name="param-l10n-date-format-YMD"
 | |
|              select="'%Y-%M-%D'" />
 | |
|   <xsl:param name="param-l10n-date-format-YM"
 | |
|              select="'%M %Y'" />
 | |
|   <xsl:param name="param-l10n-date-format-MD"
 | |
|              select="'%D %M'" />
 | |
|   <xsl:param name="param-l10n-date-format-rfc822"
 | |
|              select="'%W, %D %m %Y 00:00:00 PST'" />
 | |
| 
 | |
|   <xsl:variable name="curdate.year" select="date:year()"/>
 | |
|   <xsl:variable name="curdate.month" select="date:month-in-year()"/>
 | |
|   <xsl:variable name="curdate.day" select="date:day-in-month()"/>
 | |
| 
 | |
|   <!--
 | |
|      template name                               used in
 | |
| 
 | |
|      html-usergroups-map			 templates.usergroups.xsl
 | |
|      html-usergroups-list-regions                templates.usergroups.xsl
 | |
|      html-usergroups-list-entries                templates.usergroups.xsl
 | |
|      html-usergroups-list-header                 templates.usergroups.xsl (for l10n)
 | |
| 
 | |
|      html-news-list-newsflash-preface            templates.newsflash.xsl (for l10n)
 | |
|      html-news-list-newsflash                    templates.newsflash.xsl
 | |
|      html-news-list-press                        templates.press.xsl
 | |
|      html-news-list-datelabel                    templates.newsflash.xsl
 | |
|      html-news-generate-anchor                   templates.newsflash.xsl
 | |
|      html-news-make-olditems-list                templates.newsflash.xsl (for l10n)
 | |
|      html-news-list-newsflash-homelink           templates.newsflash.xsl (for l10n)
 | |
| 
 | |
|      html-news-list-press-preface                templates.press.xsl (for l10n)
 | |
|      html-news-list-press                        templates.press.xsl
 | |
| 
 | |
|      html-events-map			 	 templates.events.xsl (for l10n)
 | |
|      html-events-list-preface                    templates.events.xsl (for l10n)
 | |
|      html-events-list-upcoming-heading           templates.events.xsl (for l10n)
 | |
|      html-events-list-past-heading               templates.events.xsl (for l10n)
 | |
| 
 | |
|      html-list-advisories                        security/mkindex.xsl
 | |
|      html-list-advisories-putitems               security/mkindex.xsl
 | |
|      html-list-advisories-release-label          security/mkindex.xsl (for l10n)
 | |
|      rdf-security-advisories                     security/security-rdf.xsl
 | |
|      rdf-security-advisories-title               security/security-rdf.xsl (for l10n)
 | |
|      rdf-security-advisories-items               security/security-rdf.xsl
 | |
| 
 | |
|      rss-security-advisories                     security/security-rss.xsl
 | |
|      rss-security-advisories-title               security/security-rss.xsl (for l10n)
 | |
|      rss-security-advisories-items               security/security-rss.xsl
 | |
| 
 | |
|      rss-errata-notices				 security/errata-rss.xsl
 | |
|      rss-errata-notices-title			 security/errata-rss.xsl (for l10n)
 | |
|      rss-errata-notices-items			 security/errata-rss.xsl
 | |
| 
 | |
|      html-index-advisories-items                   index.xsl
 | |
|      html-index-advisories-items-lastmodified      index.xsl (for i10n)
 | |
|      html-index-news-project-items                 index.xsl
 | |
|      html-index-news-project-items-lastmodified    index.xsl (for i10n)
 | |
|      html-index-news-press-items                   index.xsl
 | |
|      html-index-news-press-items-lastmodified      index.xsl (for i10n)
 | |
|      html-index-events-items                       index.xsl
 | |
|      html-index-mirrors-options-list               index.xsl
 | |
| 
 | |
|      misc-format-date-string                     generic
 | |
|      calculate-dow                               generic
 | |
| 
 | |
|      gen-long-en-month                           templates.events.xsl
 | |
|      gen-short-en-month                          templates.news-rss.xsl
 | |
|      gen-date-interval                           templates.events.xsl
 | |
|      generate-event-anchor                       templates.events.xsl
 | |
| 
 | |
|      generate-story-anchor                       templates.press.xsl
 | |
| 
 | |
|   -->
 | |
| 
 | |
|   <!-- template: "html-usergroups-list-regions"
 | |
|        list all regions in a usergroup database -->
 | |
| 
 | |
|   <xsl:key name="html-usergroups-regions-key" match="entry" use="../../@name" />
 | |
|   <xsl:key name="html-usergroups-id-key" match="entry" use="@id" />
 | |
| 
 | |
|   <xsl:template name="html-usergroups-map">
 | |
|     <xsl:param name="mapurl" select="'none'" />
 | |
| 
 | |
|     <img>
 | |
|       <xsl:attribute name="src">
 | |
|         <xsl:value-of select="$mapurl" />
 | |
|       </xsl:attribute>
 | |
|     </img>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <xsl:template name="html-usergroups-list-regions">
 | |
|     <xsl:param name="usergroups.xml" select="'usergroups.xml'" />
 | |
| 
 | |
|     <ul>
 | |
|       <xsl:for-each select="document($usergroups.xml)//continent">
 | |
|       <xsl:sort select="format-number(count(country/entry), '000')"
 | |
|       		order="descending"/>
 | |
| 
 | |
| 	<xsl:variable name="id" select="
 | |
| 	  translate(@name,
 | |
| 	  ' ,ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | |
| 	  '--abcdefghijklmnopqrstuvwxyz')" />
 | |
| 
 | |
| 	<li>
 | |
| 	  <p><xsl:element name="a">
 | |
| 	      <xsl:attribute name="href">
 | |
| 		<xsl:value-of select="concat('#', $id)" />
 | |
| 	      </xsl:attribute>
 | |
| 
 | |
| 	      <xsl:call-template name="transtable-lookup">
 | |
| 		<xsl:with-param name="word-group" select="'continents'" />
 | |
| 		<xsl:with-param name="word" select="@name" />
 | |
| 	      </xsl:call-template>
 | |
| 	    </xsl:element>
 | |
| 	    ( <xsl:value-of select="count(country/entry)" /> user groups )</p>
 | |
| 	</li>
 | |
|       </xsl:for-each>
 | |
|     </ul>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-usergroups-list-entries"
 | |
|        list all entries in a usergroup database -->
 | |
| 
 | |
|   <xsl:template name="html-usergroups-list-entries">
 | |
|     <xsl:param name="usergroups.xml" select="'usergroups.xml'" />
 | |
|     <xsl:param name="usergroups-local.xml" select="'usergroups-local.xml'" />
 | |
| 
 | |
|     <xsl:for-each select="document($usergroups.xml)//continent">
 | |
|       <xsl:sort select="format-number(count(country/entry), '000')"
 | |
|       		order="descending"/>
 | |
| 
 | |
|       <xsl:variable name="continent" select="@name" />
 | |
|       <xsl:variable name="continent-lc" select="
 | |
| 	translate(@name,
 | |
| 	' ,ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | |
| 	'--abcdefghijklmnopqrstuvwxyz')" />
 | |
| 
 | |
|       <h3><a name="{$continent-lc}" id="{$continent-lc}">
 | |
| 	  <xsl:call-template name="transtable-lookup">
 | |
| 	    <xsl:with-param name="word-group" select="'continents'" />
 | |
| 	    <xsl:with-param name="word" select="$continent" />
 | |
| 	  </xsl:call-template></a></h3>
 | |
| 
 | |
|       <dl>
 | |
|         <xsl:for-each select="country/entry">
 | |
| 
 | |
| 	  <xsl:variable name="id"><xsl:value-of select="@id" /></xsl:variable>
 | |
| 
 | |
| 	  <xsl:variable name="name">
 | |
| 	    <xsl:for-each select="document($usergroups-local.xml)">
 | |
| 	      <xsl:choose>
 | |
| 		<!-- $p[count(.|$q) = count($q)] means product set of $p and $q-->
 | |
| 		<xsl:when test="
 | |
| 		  key('html-usergroups-regions-key', string($continent))
 | |
| 		  [count(.|key('html-usergroups-id-key', string($id)))
 | |
| 		  = count(key('html-usergroups-id-key', string($id)))]
 | |
| 		  ">
 | |
| 		  <xsl:copy-of select="
 | |
| 		    key('html-usergroups-regions-key', string($continent))
 | |
| 		    [count(.|key('html-usergroups-id-key', string($id)))
 | |
| 		    = count(key('html-usergroups-id-key', string($id)))]/name/node()
 | |
| 		    " />
 | |
| 		</xsl:when>
 | |
| 		<xsl:otherwise>
 | |
| 		  <xsl:for-each select="document($usergroups.xml)">
 | |
| 		    <xsl:copy-of select="key('html-usergroups-id-key', string($id))/name/node()" />
 | |
| 		  </xsl:for-each>
 | |
| 		</xsl:otherwise>
 | |
| 	      </xsl:choose>
 | |
| 	    </xsl:for-each>
 | |
| 	  </xsl:variable>
 | |
| 
 | |
| 	  <xsl:variable name="desc">
 | |
| 	    <xsl:for-each select="document($usergroups-local.xml)">
 | |
| 	      <xsl:choose>
 | |
| 		<!-- $p[count(.|$q) = count($q)] means product set of $p and $q-->
 | |
| 		<xsl:when test="
 | |
| 		  key('html-usergroups-regions-key', string($continent))
 | |
| 		  [count(.|key('html-usergroups-id-key', string($id)))
 | |
| 		  = count(key('html-usergroups-id-key', string($id)))]
 | |
| 		  ">
 | |
| 		  <xsl:copy-of select="
 | |
| 		    key('html-usergroups-regions-key', string($continent))
 | |
| 		    [count(.|key('html-usergroups-id-key', string($id)))
 | |
| 		    = count(key('html-usergroups-id-key', string($id)))]/description/node()
 | |
| 		    " />
 | |
| 		</xsl:when>
 | |
| 		<xsl:otherwise>
 | |
| 		  <xsl:for-each select="document($usergroups.xml)">
 | |
| 		    <xsl:copy-of select="key('html-usergroups-id-key', string($id))/description/node()" />
 | |
| 		  </xsl:for-each>
 | |
| 		</xsl:otherwise>
 | |
| 	      </xsl:choose>
 | |
| 	    </xsl:for-each>
 | |
| 	  </xsl:variable>
 | |
| 
 | |
| 	  <dt><a name="{$continent-lc}-{$id}" href="{url}"><xsl:copy-of select="$name" /></a></dt>
 | |
| 
 | |
| 	  <dd><p><xsl:copy-of select="$desc" /></p></dd>
 | |
| 	</xsl:for-each>
 | |
|       </dl>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-usergroups-list-header"
 | |
|        print header part of usergroup listing (l10n) -->
 | |
| 
 | |
|   <xsl:template name="html-usergroups-list-header">
 | |
|     <p>FreeBSD's widespread popularity has spawned a number of user groups
 | |
|       around the world.</p>
 | |
|     <p>If you know of a FreeBSD user group not listed here,
 | |
|       please fill out a <a href="http://www.freebsd.org/send-pr.html">
 | |
| 	problem report</a> for category www with the following information:</p>
 | |
|     <ol>
 | |
|       <li>A URL for the user group's website.</li>
 | |
|       <li>An email contact address of a human in charge,
 | |
|          for use by our visitors and website administrators.</li>
 | |
|       <li>A short (one paragraph) description of the user group.</li>
 | |
|     </ol>
 | |
| 
 | |
|     <p>Submissions should be in HTML. In keeping with the spirit of
 | |
|       FreeBSD, we prefer user groups that are active and which conduct
 | |
|       their business in public.  If you can't find a group near you,
 | |
|       please consider finding other interested individuals near you
 | |
|       through <a
 | |
|       href="http://bsd.meetup.com/">http://bsd.meetup.com/</a> and
 | |
|       forming your own user group.</p>
 | |
| 
 | |
|     <h3>Regions:</h3>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "calculate-dow"
 | |
|        calculate the RFC822 day of the week for a given
 | |
|        date between 1/1/2000 and 12/31/2099 -->
 | |
| 
 | |
|   <xsl:template name="calculate-dow">
 | |
|     <xsl:param name="year" select="'none'" />
 | |
|     <xsl:param name="month" select="'none'" />
 | |
|     <xsl:param name="day" select="'none'" />
 | |
| 
 | |
|     <!-- whether the current year is a leap year -->
 | |
|     <xsl:variable name="leap">
 | |
|       <xsl:choose>
 | |
|         <xsl:when test="(number($year) mod 4)=0">1</xsl:when>
 | |
|         <xsl:otherwise>0</xsl:otherwise>
 | |
|       </xsl:choose>
 | |
|     </xsl:variable>
 | |
| 
 | |
|     <!-- number of days since Jan 1 of the current year -->
 | |
|     <xsl:variable name="daysthisyear">
 | |
|       <xsl:choose>
 | |
|         <xsl:when test="$month=1"><xsl:value-of select="number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=2"><xsl:value-of select="31 + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=3"><xsl:value-of select="59 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=4"><xsl:value-of select="90 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=5"><xsl:value-of select="120 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=6"><xsl:value-of select="151 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=7"><xsl:value-of select="181 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=8"><xsl:value-of select="212 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=9"><xsl:value-of select="243 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=10"><xsl:value-of select="273 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=11"><xsl:value-of select="304 + $leap + number($day)"/></xsl:when>
 | |
|         <xsl:when test="$month=12"><xsl:value-of select="334 + $leap + number($day)"/></xsl:when>
 | |
| 	<xsl:otherwise><xsl:value-of select="number(0)"/></xsl:otherwise>
 | |
|       </xsl:choose>
 | |
|     </xsl:variable>
 | |
| 
 | |
|     <!-- number of leap years prior to current year (after 2000). -->
 | |
|     <xsl:variable name="leapyears" select="floor((number($year + 3) - 2000) div 4)"/>
 | |
| 
 | |
|     <xsl:variable name="totaldayssince2000" select="(number($year)-2000)*365 + $leapyears + $daysthisyear"/>
 | |
| 
 | |
|     <!-- 5 is constant for day of week Jan 1 2000. -->
 | |
|     <xsl:variable name="dow" select="(5 + $totaldayssince2000) mod 7"/>
 | |
| 
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$dow=0">Sun</xsl:when>
 | |
|       <xsl:when test="$dow=1">Mon</xsl:when>
 | |
|       <xsl:when test="$dow=2">Tue</xsl:when>
 | |
|       <xsl:when test="$dow=3">Wed</xsl:when>
 | |
|       <xsl:when test="$dow=4">Thu</xsl:when>
 | |
|       <xsl:when test="$dow=5">Fri</xsl:when>
 | |
|       <xsl:when test="$dow=6">Sat</xsl:when>
 | |
|       <xsl:when test="$dow=7">Sun</xsl:when>
 | |
|       <xsl:otherwise>???</xsl:otherwise>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "misc-format-date-string"
 | |
|        format date string with localization if needed -->
 | |
| 
 | |
|   <xsl:template name="misc-format-date-string">
 | |
|     <xsl:param name="year" select="'none'" />
 | |
|     <xsl:param name="month" select="'none'" />
 | |
|     <xsl:param name="day" select="'none'" />
 | |
|     <xsl:param name="date-format" select="$param-l10n-date-format-YMD" />
 | |
| 
 | |
|     <xsl:param name="dow">
 | |
|       <xsl:call-template name="calculate-dow">
 | |
|         <xsl:with-param name="year" select="$year" />
 | |
|         <xsl:with-param name="month" select="$month" />
 | |
|         <xsl:with-param name="day" select="$day" />
 | |
|       </xsl:call-template>
 | |
|     </xsl:param>
 | |
| 
 | |
|     <xsl:param name="lmonth">
 | |
|       <xsl:call-template name="transtable-lookup">
 | |
| 	<xsl:with-param name="word-group" select="'number-month'" />
 | |
| 	<xsl:with-param name="word" select="$month" />
 | |
|       </xsl:call-template>
 | |
|     </xsl:param>
 | |
| 
 | |
|     <xsl:param name="smonth">
 | |
|       <xsl:call-template name="gen-short-en-month">
 | |
| 	<xsl:with-param name="nummonth" select="$month" />
 | |
|       </xsl:call-template>
 | |
|     </xsl:param>
 | |
| 
 | |
|     <xsl:param name="tmp-replace-year">
 | |
|       <xsl:call-template name="misc-format-date-string-replace">
 | |
| 	<xsl:with-param name="target" select="$date-format" />
 | |
| 	<xsl:with-param name="before" select="'%Y'" />
 | |
| 	<xsl:with-param name="after" select="$year" />
 | |
|       </xsl:call-template>
 | |
|     </xsl:param>
 | |
| 
 | |
|     <xsl:param name="tmp-replace-day">
 | |
|       <xsl:call-template name="misc-format-date-string-replace">
 | |
| 	<xsl:with-param name="target" select="$tmp-replace-year" />
 | |
| 	<xsl:with-param name="before" select="'%D'" />
 | |
| 	<xsl:with-param name="after" select="$day" />
 | |
|       </xsl:call-template>
 | |
|     </xsl:param>
 | |
| 
 | |
|     <xsl:param name="tmp-replace-day-of-week">
 | |
|       <xsl:call-template name="misc-format-date-string-replace">
 | |
| 	<xsl:with-param name="target" select="$tmp-replace-day" />
 | |
| 	<xsl:with-param name="before" select="'%W'" />
 | |
| 	<xsl:with-param name="after" select="$dow" />
 | |
|       </xsl:call-template>
 | |
|     </xsl:param>
 | |
| 
 | |
|     <xsl:param name="tmp-replace-month">
 | |
|       <xsl:call-template name="misc-format-date-string-replace">
 | |
| 	<xsl:with-param name="target" select="$tmp-replace-day-of-week" />
 | |
| 	<xsl:with-param name="before" select="'%M'" />
 | |
| 	<xsl:with-param name="after" select="$lmonth" />
 | |
|       </xsl:call-template>
 | |
|     </xsl:param>
 | |
| 
 | |
|     <xsl:call-template name="misc-format-date-string-replace">
 | |
|       <xsl:with-param name="target" select="$tmp-replace-month" />
 | |
|       <xsl:with-param name="before" select="'%m'" />
 | |
|       <xsl:with-param name="after" select="$smonth" />
 | |
|     </xsl:call-template>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <xsl:template name="misc-format-date-string-replace">
 | |
|     <xsl:param name="target" select="''" />
 | |
|     <xsl:param name="before" select="''" />
 | |
|     <xsl:param name="after" select="''" />
 | |
| 
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="contains($target, $before)">
 | |
| 	<xsl:value-of select="substring-before($target, $before)" />
 | |
| 	<xsl:value-of select="$after" />
 | |
| 	<xsl:call-template name="misc-format-date-string-replace">
 | |
| 	  <xsl:with-param name="target" select="substring-after($target, $before)" />
 | |
| 	  <xsl:with-param name="before" select="$before" />
 | |
| 	  <xsl:with-param name="after" select="$after" />
 | |
| 	</xsl:call-template>
 | |
|       </xsl:when>
 | |
|       <xsl:otherwise>
 | |
| 	<xsl:value-of select="$target" />
 | |
|       </xsl:otherwise>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-make-olditems-list" -->
 | |
|   <xsl:template name="html-news-make-olditems-list">
 | |
|     <p>Old announcements:
 | |
|       <a href="2009/index.html">2009</a>,
 | |
|       <a href="2008/index.html">2008</a>,
 | |
|       <a href="2007/index.html">2007</a>,
 | |
|       <a href="2006/index.html">2006</a>,
 | |
|       <a href="2005/index.html">2005</a>,
 | |
|       <a href="2004/index.html">2004</a>,
 | |
|       <a href="2003/index.html">2003</a>,
 | |
|       <a href="2002/index.html">2002</a>,
 | |
|       <a href="2001/index.html">2001</a>,
 | |
|       <a href="2000/index.html">2000</a>,
 | |
|       <a href="1999/index.html">1999</a>,
 | |
|       <a href="1998/index.html">1998</a>,
 | |
|       <a href="1997/index.html">1997</a>,
 | |
|       <a href="1996/index.html">1996</a></p>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-press-make-olditems-list" -->
 | |
|   <xsl:template name="html-press-make-olditems-list">
 | |
|     <p>Old press publications:
 | |
|       <a href="2008/press.html">2008</a>,
 | |
|       <a href="2007/press.html">2007</a>,
 | |
|       <a href="2006/press.html">2006</a>,
 | |
|       <a href="2005/press.html">2005</a>,
 | |
|       <a href="2004/press.html">2004</a>,
 | |
|       <a href="2003/press.html">2003</a>,
 | |
|       <a href="2002/press.html">2002</a>,
 | |
|       <a href="2001/press.html">2001</a>,
 | |
|       <a href="2000/press.html">2000</a>,
 | |
|       <a href="1999/press.html">1999</a>,
 | |
|       <a href="1998/press.html">1998-1996</a></p>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-list-newsflash-preface" -->
 | |
|   <xsl:template name="html-news-list-newsflash-preface">
 | |
|     <img src="&base;/gifs/news.jpg" align="right" border="0" width="193"
 | |
|       height="144" alt="FreeBSD News"/>
 | |
| 
 | |
|     <p>FreeBSD is a rapidly developing operating system.  Keeping up on
 | |
|       the latest developments can be a chore!  To keep on top of things,
 | |
|       be sure and check this page periodically.  Also, you may wish to
 | |
|       subscribe to the
 | |
|       <a href="&base;/doc/en_US.ISO8859-1/books/handbook/eresources.html#ERESOURCES-MAIL">freebsd-announce
 | |
| 	mailing list</a> or the <a href="rss.xml">RSS feed</a>.</p>
 | |
| 
 | |
|     <p>The following projects have their own news pages, which should
 | |
|       be checked for project specific updates.</p>
 | |
| 
 | |
|     <ul>
 | |
|       <li><a href="&base;/java/newsflash.html">&java; on FreeBSD</a></li>
 | |
|       <li><a href="http://freebsd.kde.org/">KDE on FreeBSD</a></li>
 | |
|       <li><a href="&base;/gnome/newsflash.html">GNOME on FreeBSD</a></li>
 | |
|     </ul>
 | |
| 
 | |
|     <p>For a detailed description of past, present, and future releases,
 | |
|       see the <a href="&base;/releases/index.html">Release Information</a>
 | |
|       page.</p>
 | |
| 
 | |
|     <p>For FreeBSD security information and a list of available
 | |
|       Security Advisories, please refer to the
 | |
|       <a href="&base;/security/">Security Information</a> page.</p>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-list-newsflash-homelink" -->
 | |
|   <xsl:template name="html-news-list-newsflash-homelink">
 | |
|     <a href="&base;/news/news.html">News Home</a>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-list-press-preface" -->
 | |
|   <xsl:template name="html-news-list-press-preface">
 | |
|     <p>If you know of any news stories featuring FreeBSD that we have not
 | |
|       listed here, please send details to 
 | |
|       <a href="mailto:www@FreeBSD.org">www@FreeBSD.org</a> so that we can
 | |
|       include them.</p>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <xsl:template name="html-events-list-preface">
 | |
|     <p>If you know of any FreeBSD related events, or events that
 | |
|       are of interest for FreeBSD users, which are not listed
 | |
|       here, please send details to <a href="mailto:www@FreeBSD.org"
 | |
| 	>www@FreeBSD.org</a>, so they can be included.</p>
 | |
| 
 | |
|     <p>Users with organisational software that understands the
 | |
|       iCalendar format can subscribe to the
 | |
|       <a href="&base;/events/events.ics">FreeBSD events calendar</a>
 | |
|       which contains all of the events listed here.</p>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <xsl:template name="html-events-map">
 | |
|     <xsl:param name="mapurl" select="'none'" />
 | |
| 
 | |
|     <p>Countries and regions displayed in dark red on the map below
 | |
|       are hosting upcoming FreeBSD-related events.  Countries that
 | |
|       have hosted FreeBSD-related events in the past show up in yellow
 | |
|       or orange, with darker colors representing a larger number of
 | |
|       previous events.</p>
 | |
| 
 | |
|     <img>
 | |
|       <xsl:attribute name="src">
 | |
|         <xsl:value-of select="$mapurl" />
 | |
|       </xsl:attribute>
 | |
|     </img>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <xsl:template name="html-events-list-upcoming-heading">
 | |
|     <h2 id="upcoming">Current/Upcoming Events:</h2>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <xsl:template name="html-events-list-past-heading">
 | |
|     <h2 id="past">Past Events:</h2>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-list-newsflash" -->
 | |
|   <xsl:template name="html-news-list-newsflash">
 | |
|     <xsl:param name="news.project.xml-master" select="'none'" />
 | |
|     <xsl:param name="news.project.xml" select="'none'" />
 | |
| 
 | |
|     <xsl:for-each select="document($news.project.xml-master)//descendant::year">
 | |
|       <xsl:variable name="year" select="name" />
 | |
| 
 | |
|       <xsl:for-each select="month">
 | |
| 	<xsl:variable name="month" select="name" />
 | |
| 
 | |
| 	<h1>
 | |
| 	  <xsl:call-template name="misc-format-date-string">
 | |
| 	    <xsl:with-param name="year" select="$year" />
 | |
| 	    <xsl:with-param name="month" select="$month" />
 | |
| 	    <xsl:with-param name="date-format" select="$param-l10n-date-format-YM" />
 | |
| 	  </xsl:call-template>
 | |
| 	</h1>
 | |
| 
 | |
| 	<ul>
 | |
| 	  <xsl:for-each select="day">
 | |
| 	    <xsl:variable name="day" select="name" />
 | |
| 	    <xsl:variable name="index" select="position()" />
 | |
| 
 | |
| 	    <!-- search localized items per day basis -->
 | |
| 	    <xsl:variable name="localizeditems"
 | |
| 	      select="document($news.project.xml)
 | |
| 	              //descendant::year[name = $year]
 | |
| 	              /month[name = $month]
 | |
| 	              /day[name = $day and position() = $index]" />
 | |
| 
 | |
| 	    <xsl:choose>
 | |
| 	      <xsl:when test="$localizeditems">
 | |
| 		<!-- when localized item exists -->
 | |
| 		<xsl:for-each select="$localizeditems/event">
 | |
| 		  <xsl:variable name="anchor-position" select="position()" />
 | |
| 
 | |
| 		  <li><p class="localized">
 | |
| 		      <a><xsl:attribute name="name">
 | |
| 			  <xsl:call-template name="html-news-generate-anchor">
 | |
| 			    <xsl:with-param name="label" select="local-name()" />
 | |
| 			    <xsl:with-param name="year" select="$year" />
 | |
| 			    <xsl:with-param name="month" select="$month" />
 | |
| 			    <xsl:with-param name="day" select="$day" />
 | |
| 			    <xsl:with-param name="pos" select="$anchor-position" />
 | |
| 			  </xsl:call-template>
 | |
| 			</xsl:attribute></a>
 | |
| 		      <b><xsl:call-template name="html-news-datelabel">
 | |
| 			  <xsl:with-param name="year" select="$year" />
 | |
| 			  <xsl:with-param name="month">
 | |
| 			    <xsl:call-template name="transtable-lookup">
 | |
| 			      <xsl:with-param name="word-group" select="'number-month'" />
 | |
| 			      <xsl:with-param name="word" select="$month" />
 | |
| 			    </xsl:call-template>
 | |
| 			  </xsl:with-param>
 | |
| 			  <xsl:with-param name="day" select="$day" />
 | |
| 			</xsl:call-template></b>
 | |
| 		      <!-- put localized text -->
 | |
| 		      <xsl:text> </xsl:text>
 | |
| 		      <xsl:for-each select="p">
 | |
| 		      <xsl:if test="position() > 1"><br /><br /></xsl:if>
 | |
| 		      <xsl:copy-of select="child::node()" />
 | |
| 		      </xsl:for-each>
 | |
| 		    </p>
 | |
| 		  </li>
 | |
| 		</xsl:for-each>
 | |
| 	      </xsl:when>
 | |
| 
 | |
| 	      <xsl:otherwise>
 | |
| 		<!-- when localized item does not exist -->
 | |
| 		<xsl:for-each select="event">
 | |
| 		  <xsl:variable name="anchor-position" select="position()" />
 | |
| 
 | |
| 		  <li><p class="original">
 | |
| 		      <a><xsl:attribute name="name">
 | |
| 			  <xsl:call-template name="html-news-generate-anchor">
 | |
| 			    <xsl:with-param name="label" select="local-name()" />
 | |
| 			    <xsl:with-param name="year" select="$year" />
 | |
| 			    <xsl:with-param name="month" select="$month" />
 | |
| 			    <xsl:with-param name="day" select="$day" />
 | |
| 			    <xsl:with-param name="pos" select="$anchor-position" />
 | |
| 			  </xsl:call-template>
 | |
| 			</xsl:attribute></a>
 | |
| 		      <b><xsl:call-template name="html-news-datelabel">
 | |
| 			  <xsl:with-param name="year" select="$year" />
 | |
| 			  <xsl:with-param name="month">
 | |
| 			    <xsl:call-template name="transtable-lookup">
 | |
| 			      <xsl:with-param name="word-group" select="'number-month'" />
 | |
| 			      <xsl:with-param name="word" select="$month" />
 | |
| 			    </xsl:call-template>
 | |
| 			  </xsl:with-param>
 | |
| 			  <xsl:with-param name="day" select="$day" />
 | |
| 			</xsl:call-template></b>
 | |
| 		      <!-- put English text -->
 | |
| 		      <xsl:text> </xsl:text>
 | |
| 		      <xsl:for-each select="p">
 | |
| 		      <xsl:if test="position() > 1"><br /><br /></xsl:if>
 | |
| 		      <xsl:copy-of select="child::node()" />
 | |
| 		      </xsl:for-each>
 | |
| 		    </p>
 | |
| 		  </li>
 | |
| 		</xsl:for-each>
 | |
| 	      </xsl:otherwise>
 | |
| 	    </xsl:choose>
 | |
| 	  </xsl:for-each>
 | |
| 	</ul>
 | |
|       </xsl:for-each>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-list-press" -->
 | |
|   <xsl:template name="html-news-list-press">
 | |
|     <xsl:param name="news.press.xml-master" select="'none'" />
 | |
|     <xsl:param name="news.press.xml" select="'none'" />
 | |
| 
 | |
|     <xsl:for-each select="document($news.press.xml-master)//descendant::year">
 | |
|       <xsl:variable name="year" select="name" />
 | |
| 
 | |
|       <xsl:for-each select="month">
 | |
| 	<xsl:variable name="month" select="name" />
 | |
| 
 | |
| 	<h1>
 | |
| 	  <xsl:call-template name="misc-format-date-string">
 | |
| 	    <xsl:with-param name="year" select="$year" />
 | |
| 	    <xsl:with-param name="month" select="$month" />
 | |
| 	    <xsl:with-param name="date-format" select="$param-l10n-date-format-YM" />
 | |
| 	  </xsl:call-template>
 | |
| 	</h1>
 | |
| 
 | |
| 	<ul>
 | |
| 	  <xsl:for-each select="story">
 | |
| 	    <xsl:variable name="url"><xsl:value-of select="url"/></xsl:variable>
 | |
| 	    <xsl:variable name="site-url"><xsl:value-of select="site-url"/></xsl:variable>
 | |
| 
 | |
| 	    <!-- search localized items per story(URL) basis -->
 | |
| 	    <xsl:variable name="localizeditems"
 | |
| 	      select="document($news.press.xml)
 | |
| 	              //descendant::year[name = $year]
 | |
| 	              /month[name = $month]
 | |
| 	              /story[url = $url]" />
 | |
| 
 | |
| 	    <xsl:variable name="anchor-position" select="position()" />
 | |
| 
 | |
| 	    <xsl:choose>
 | |
| 	      <xsl:when test="$localizeditems">
 | |
| 		<xsl:for-each select="$localizeditems">
 | |
| 		  <li><p>
 | |
| 		      <a><xsl:attribute name="name">
 | |
| 			  <xsl:call-template name="html-news-generate-anchor">
 | |
| 			    <xsl:with-param name="label" select="local-name()" />
 | |
| 			    <xsl:with-param name="year" select="$year" />
 | |
| 			    <xsl:with-param name="month" select="$month" />
 | |
| 			    <xsl:with-param name="pos" select="$anchor-position" />
 | |
| 			  </xsl:call-template>
 | |
| 			</xsl:attribute></a>
 | |
| 		      <a href="{$url}"><b><xsl:value-of select="name"/></b></a><br/>
 | |
| 		      <a href="{$site-url}"><xsl:value-of select="site-name"/></a>,
 | |
| 		      <xsl:value-of select="author"/><br/>
 | |
| 		      <xsl:copy-of select="p/child::node()"/>
 | |
| 		    </p>
 | |
| 		  </li>
 | |
| 		</xsl:for-each>
 | |
| 	      </xsl:when>
 | |
| 
 | |
| 	      <xsl:otherwise>
 | |
| 		<xsl:for-each select=".">
 | |
| 		  <li><p>
 | |
| 		      <a><xsl:attribute name="name">
 | |
| 			  <xsl:call-template name="html-news-generate-anchor">
 | |
| 			    <xsl:with-param name="label" select="local-name()" />
 | |
| 			    <xsl:with-param name="year" select="$year" />
 | |
| 			    <xsl:with-param name="month" select="$month" />
 | |
| 			    <xsl:with-param name="pos" select="$anchor-position" />
 | |
| 			  </xsl:call-template>
 | |
| 			</xsl:attribute></a>
 | |
| 
 | |
| 		      <a href="{$url}"><b><xsl:value-of select="name"/></b></a><br/>
 | |
| 		      <a href="{$site-url}"><xsl:value-of select="site-name"/></a>,
 | |
| 		      <xsl:value-of select="author"/><br/>
 | |
| 		      <xsl:copy-of select="p/child::node()"/>
 | |
| 		    </p>
 | |
| 		  </li>
 | |
| 		</xsl:for-each>
 | |
| 	      </xsl:otherwise>
 | |
| 	    </xsl:choose>
 | |
| 	  </xsl:for-each>
 | |
| 	</ul>
 | |
|       </xsl:for-each>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-datelabel" -->
 | |
|   <xsl:template name="html-news-datelabel">
 | |
|     <xsl:param name="year" />
 | |
|     <xsl:param name="month" />
 | |
|     <xsl:param name="day" />
 | |
| 
 | |
|     <xsl:call-template name="misc-format-date-string">
 | |
|       <xsl:with-param name="month" select="$month" />
 | |
|       <xsl:with-param name="day" select="$day" />
 | |
|       <xsl:with-param name="date-format" select="$param-l10n-date-format-MD" />
 | |
|     </xsl:call-template>
 | |
| 
 | |
|     <xsl:text>:</xsl:text>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "generate-month-num" -->
 | |
|   <xsl:template name="generate-month-num">
 | |
|     <xsl:param name="month" />
 | |
| 
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$month='January'">1</xsl:when>
 | |
|       <xsl:when test="$month='February'">2</xsl:when>
 | |
|       <xsl:when test="$month='March'">3</xsl:when>
 | |
|       <xsl:when test="$month='April'">4</xsl:when>
 | |
|       <xsl:when test="$month='May'">5</xsl:when>
 | |
|       <xsl:when test="$month='June'">6</xsl:when>
 | |
|       <xsl:when test="$month='July'">7</xsl:when>
 | |
|       <xsl:when test="$month='August'">8</xsl:when>
 | |
|       <xsl:when test="$month='September'">9</xsl:when>
 | |
|       <xsl:when test="$month='October'">10</xsl:when>
 | |
|       <xsl:when test="$month='November'">11</xsl:when>
 | |
|       <xsl:when test="$month='December'">12</xsl:when>
 | |
|       <xsl:otherwise>???</xsl:otherwise>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-news-generate-anchor" (for l10n) -->
 | |
|   <xsl:template name="html-news-generate-anchor">
 | |
|     <xsl:param name="label" />
 | |
|     <xsl:param name="year" />
 | |
|     <xsl:param name="month" />
 | |
|     <xsl:param name="day" />
 | |
|     <xsl:param name="pos" />
 | |
| 
 | |
|     <xsl:value-of select="concat(
 | |
|       $label,
 | |
|       format-number($year, '0000'),
 | |
|       format-number($month, '00'))" />
 | |
|     <xsl:if test="$label = 'event'" >
 | |
|       <xsl:value-of select="format-number($day, '00')" />
 | |
|     </xsl:if>
 | |
|     <xsl:value-of select="format-number($pos, ':00')" />
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-list-advisories"
 | |
|        generate a list of all security advisories -->
 | |
| 
 | |
|   <xsl:template name="html-list-advisories">
 | |
|     <xsl:param name="advisories.xml" select="'none'" />
 | |
|     <xsl:param name="type" select="'advisory'" />
 | |
| 
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$type = 'advisory'">
 | |
|         <xsl:call-template name="html-list-advisories-putitems">
 | |
|           <xsl:with-param name="items" select="document($advisories.xml)//advisory" />
 | |
|           <xsl:with-param name="itemtype" select="'Advisory'" />
 | |
|           <xsl:with-param name="prefix" select="'&ftpbase;'" />
 | |
|           <xsl:with-param name="prefixold" select="'&ftpbaseold;'" />
 | |
|         </xsl:call-template>
 | |
|       </xsl:when>
 | |
| 
 | |
|       <xsl:when test="$type = 'notice'">
 | |
| 	<xsl:call-template name="html-list-advisories-putitems">
 | |
| 	  <xsl:with-param name="items" select="document($advisories.xml)//notice" />
 | |
| 	  <xsl:with-param name="itemtype" select="'Errata Notice'" />
 | |
| 	  <xsl:with-param name="prefix" select="'&ftpbaseerrata;'" />
 | |
| 	  <xsl:with-param name="prefixold" select="'&ftpbaseerrata;'" />
 | |
| 	</xsl:call-template>
 | |
|       </xsl:when>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-list-advisories-putitems"
 | |
|        sub-routine to generate a list -->
 | |
| 
 | |
|   <xsl:template name="html-list-advisories-putitems">
 | |
|     <xsl:param name="items" select="''" />
 | |
|     <xsl:param name="itemtype" select="''" />
 | |
|     <xsl:param name="prefix" select="''" />
 | |
|     <xsl:param name="prefixold" select="''" />
 | |
| 
 | |
|     <xsl:if test="$items">
 | |
|       <table>
 | |
|         <tr><th>Date</th><th><xsl:value-of select='$itemtype' /> name</th></tr>
 | |
|         <xsl:for-each select="$items">
 | |
|           <xsl:variable name="year" select="../../../name" />
 | |
|           <xsl:variable name="month" select="../../name" />
 | |
|           <xsl:variable name="day" select="../name" />
 | |
|           <tr>
 | |
|             <td class="txtdate">
 | |
| 	      <xsl:value-of select='
 | |
| 		concat(format-number($year, "####"), "-",
 | |
| 		format-number($month, "00"), "-",
 | |
| 		format-number($day, "00"))' />
 | |
|             </td>
 | |
|             <td>
 | |
| 	    <xsl:choose>
 | |
| 	      <xsl:when test="@type='release'">
 | |
|                 <i><xsl:value-of select="name" /></i>
 | |
| 	      </xsl:when>
 | |
| 	      <xsl:when test="@omithref='yes'">
 | |
| 		<xsl:value-of select="name" />
 | |
| 	      </xsl:when>
 | |
| 	      <xsl:when test="name/@role='old'">
 | |
| 		<a><xsl:attribute name="href">
 | |
| 		    <xsl:value-of select="concat($prefixold, name, '.asc')" />
 | |
| 		  </xsl:attribute>
 | |
| 		  <xsl:value-of select="concat(name, '.asc')" /></a>
 | |
| 	      </xsl:when>
 | |
| 	      <xsl:otherwise>
 | |
| 		<a><xsl:attribute name="href">
 | |
| 		    <xsl:value-of select="concat($prefix, name, '.asc')" />
 | |
| 		  </xsl:attribute>
 | |
| 		  <xsl:value-of select="name" /></a>
 | |
| 	      </xsl:otherwise>
 | |
| 	    </xsl:choose>
 | |
|           </td></tr>
 | |
| 	</xsl:for-each>
 | |
|       </table>
 | |
|     </xsl:if>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-list-advisories-release-label"
 | |
|        put label for release -->
 | |
| 
 | |
|   <xsl:template name="html-list-advisories-release-label">
 | |
|     <xsl:param name="relname" select="'none'" />
 | |
| 
 | |
|     <p><xsl:value-of select="$relname" /> released.</p>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-advisories-items"
 | |
|        pulls in the 6 most recent security advisories -->
 | |
| 
 | |
|   <xsl:template name="html-index-advisories-items">
 | |
|     <xsl:param name="advisories.xml" select="''" />
 | |
|     <xsl:param name="type" select="'advisory'" />
 | |
| 
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$type = 'advisory'">
 | |
| 	<xsl:for-each select="document($advisories.xml)/descendant::advisory[position() <= 3]">
 | |
| 	  <xsl:variable name="year" select="../../../name" />
 | |
|           <xsl:variable name="month" select="../../name" />
 | |
|           <xsl:variable name="day" select="../name" />
 | |
| 	<p>
 | |
| 	  <span class="txtdate">
 | |
| 	      <xsl:value-of select='
 | |
| 		concat(format-number($year, "####"), "-",
 | |
| 		format-number($month, "00"), "-",
 | |
| 		format-number($day, "00"))' />
 | |
| 	  </span><br />
 | |
| 	  <xsl:choose>
 | |
| 	    <xsl:when test="@omithref = 'yes'">
 | |
| 	      <xsl:value-of select="name"/>
 | |
| 	    </xsl:when>
 | |
| 	    <xsl:otherwise>
 | |
| 	      <a><xsl:attribute name="href">
 | |
| 		  <xsl:value-of select="concat('&ftpbase;', name, '.asc')"/>
 | |
| 		</xsl:attribute>
 | |
| 		<xsl:value-of select="name"/></a>
 | |
| 	    </xsl:otherwise>
 | |
| 	  </xsl:choose>
 | |
| 	  </p>
 | |
| 	</xsl:for-each>
 | |
|       </xsl:when>
 | |
|       <xsl:when test="$type = 'notice'">
 | |
| 	<xsl:for-each select="document($advisories.xml)/descendant::notice[position() <= 2]">
 | |
| 	<xsl:variable name="year" select="../../../name" />
 | |
| 	<xsl:variable name="month" select="../../name" />
 | |
| 	<xsl:variable name="day" select="../name" />
 | |
| 	<p>
 | |
| 	  <span class="txtdate">
 | |
| 	      <xsl:value-of select='
 | |
| 		concat(format-number($year, "####"), "-",
 | |
| 		format-number($month, "00"), "-",
 | |
| 		format-number($day, "00"))' />
 | |
| 	  </span><br />
 | |
| 	  <xsl:choose>
 | |
| 	    <xsl:when test="@omithref = 'yes'">
 | |
| 	      <xsl:value-of select="name"/>
 | |
| 	    </xsl:when>
 | |
| 	    <xsl:otherwise>
 | |
| 	      <a><xsl:attribute name="href">
 | |
| 		  <xsl:value-of select="concat('&ftpbaseerrata;', name, '.asc')"/>
 | |
| 		</xsl:attribute>
 | |
| 		<xsl:value-of select="name"/></a>
 | |
| 	    </xsl:otherwise>
 | |
| 	  </xsl:choose>
 | |
| 	  </p>
 | |
| 	</xsl:for-each>
 | |
|       </xsl:when>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-advisories-items-lastmodified" -->
 | |
| 
 | |
|   <xsl:template name="html-index-advisories-items-lastmodified">
 | |
|     <xsl:param name="advisories.xml" select="''" />
 | |
|     <xsl:param name="type" select="'advisory'" />
 | |
| 
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$type = 'advisory'">
 | |
| 	<xsl:call-template name="misc-format-date-string">
 | |
| 	  <xsl:with-param name="year"
 | |
| 	    select="document($advisories.xml)/descendant::year[month/day/advisory[position() = 1]]/name" />
 | |
| 	  <xsl:with-param name="month"
 | |
| 	    select="document($advisories.xml)/descendant::month[day/advisory[position() = 1]]/name"/>
 | |
| 	  <xsl:with-param name="day"
 | |
| 	    select="document($advisories.xml)/descendant::day[advisory[position() = 1]]/name" />
 | |
| 	</xsl:call-template>
 | |
|       </xsl:when>
 | |
| 
 | |
|       <xsl:when test="$type = 'notice'">
 | |
| 	<xsl:call-template name="misc-format-date-string">
 | |
| 	  <xsl:with-param name="year"
 | |
| 	    select="document($advisories.xml)/descendant::year[month/day/notice[position() = 1]]/name" />
 | |
| 	  <xsl:with-param name="month"
 | |
| 	    select="document($advisories.xml)/descendant::month[day/notice[position() = 1]]/name" />
 | |
| 	  <xsl:with-param name="day"
 | |
| 	    select="document($advisories.xml)/descendant::day[notice[position() = 1]]/name" />
 | |
| 	</xsl:call-template>
 | |
|       </xsl:when>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rdf-security-advisories"
 | |
|        generate a rdf of 10 most recent security advisories -->
 | |
| 
 | |
|   <xsl:template name="rdf-security-advisories">
 | |
|     <xsl:param name="advisories.xml" select="''" />
 | |
| 
 | |
|     <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | |
| 	     xmlns="http://my.netscape.com/rdf/simple/0.9/">
 | |
| 
 | |
|       <xsl:call-template name="rdf-security-advisories-title" />
 | |
| 
 | |
|       <xsl:call-template name="rdf-security-advisories-items">
 | |
| 	<xsl:with-param name="advisories.xml" select="$advisories.xml" />
 | |
|       </xsl:call-template>
 | |
|     </rdf:RDF>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rdf-security-advisories-title"
 | |
|        generate title for the security advisories rdf -->
 | |
| 
 | |
|   <xsl:template name="rdf-security-advisories-title"
 | |
|                 xmlns="http://my.netscape.com/rdf/simple/0.9/">
 | |
|     <channel>
 | |
|       <title>FreeBSD Security Advisories</title>
 | |
|       <link>http://www.FreeBSD.org/security/</link>
 | |
|       <description>Security advisories published from the FreeBSD Project</description>
 | |
|     </channel>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rdf-security-advisories-items"
 | |
|        pulls in the 10 most recent security advisories -->
 | |
| 
 | |
|   <xsl:template name="rdf-security-advisories-items"
 | |
|                 xmlns="http://my.netscape.com/rdf/simple/0.9/">
 | |
|     <xsl:param name="advisories.xml" select="''" />
 | |
| 
 | |
|     <xsl:for-each select="document($advisories.xml)/descendant::advisory[position() <= 10]">
 | |
|       <item>
 | |
| 	<title><xsl:value-of select="name"/></title>
 | |
| 	<xsl:choose>
 | |
| 	  <xsl:when test="@omithref = 'yes'">
 | |
| 	    <xsl:value-of select="name"/>
 | |
| 	  </xsl:when>
 | |
| 	  <xsl:otherwise>
 | |
| 	    <link><xsl:value-of select="concat('&ftpbase;', name, '.asc')" /></link>
 | |
| 	  </xsl:otherwise>
 | |
| 	</xsl:choose>
 | |
| 
 | |
|       </item>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rss-security-advisories"
 | |
|        generate a rdf of 10 most recent security advisories -->
 | |
| 
 | |
|   <xsl:template name="rss-security-advisories">
 | |
|     <xsl:param name="advisories.xml" select="''" />
 | |
| 
 | |
|     <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
 | |
|       <channel>
 | |
|         <xsl:call-template name="rss-security-advisories-title">
 | |
| 	  <xsl:with-param name="advisories.xml" select="$advisories.xml" />
 | |
|         </xsl:call-template>
 | |
|         <xsl:call-template name="rss-security-advisories-items">
 | |
| 	  <xsl:with-param name="advisories.xml" select="$advisories.xml" />
 | |
|         </xsl:call-template>
 | |
|       </channel>
 | |
|     </rss>
 | |
| 
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rss-security-advisories-title"
 | |
|        pulls in the 10 most recent security advisories -->
 | |
| 
 | |
|   <xsl:template name="rss-security-advisories-title"
 | |
|                 xmlns:atom="http://www.w3.org/2005/Atom">
 | |
|     <xsl:param name="advisories.xml" select="''" />
 | |
| 
 | |
|     <xsl:variable name="title">FreeBSD Security Advisories</xsl:variable>
 | |
|     <xsl:variable name="link">http://www.FreeBSD.org/security/</xsl:variable>
 | |
| 
 | |
|     <title><xsl:value-of select="$title" /></title>
 | |
|     <link><xsl:value-of select="$link" /></link>
 | |
|     <description>Security advisories published from the FreeBSD Project</description>
 | |
|     <language>en-us</language>
 | |
|     <webMaster>secteam@FreeBSD.org (FreeBSD Security Team)</webMaster>
 | |
|     <managingEditor>secteam@FreeBSD.org (FreeBSD Security Team)</managingEditor>
 | |
|     <docs>http://blogs.law.harvard.edu/tech/rss</docs>
 | |
|     <ttl>120</ttl>
 | |
|     <image>
 | |
|       <url>http://www.FreeBSD.org/logo/logo-full.png</url>
 | |
|       <title><xsl:value-of select="$title" /></title>
 | |
|       <link><xsl:value-of select="$link" /></link>
 | |
|     </image>
 | |
|     <atom:link rel="self" type="application/rss+xml">
 | |
|       <xsl:attribute name="href">
 | |
|         <xsl:value-of select="$link" /><xsl:text>rss.xml</xsl:text>
 | |
|       </xsl:attribute>
 | |
|     </atom:link> 
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rss-security-advisories-items"
 | |
|        pulls in the 10 most recent security advisories -->
 | |
| 
 | |
|   <xsl:template name="rss-security-advisories-items"
 | |
|                 xmlns:atom="http://www.w3.org/2005/Atom">
 | |
|     <xsl:param name="advisories.xml" select="''" />
 | |
| 
 | |
|     <xsl:for-each select="document($advisories.xml)/descendant::advisory[position() <= 10]">
 | |
|       <item>
 | |
| 	<title><xsl:value-of select="name"/></title>
 | |
| 	<xsl:choose>
 | |
| 	  <xsl:when test="@omithref = 'yes'">
 | |
| 	    <link>http://www.FreeBSD.org/security</link>
 | |
| 	  </xsl:when>
 | |
| 	  <xsl:otherwise>
 | |
| 	    <link><xsl:value-of select="concat('&ftpbase;', name, '.asc')" /></link>
 | |
| 	  </xsl:otherwise>
 | |
| 	</xsl:choose>
 | |
|         <guid><xsl:value-of select="concat('&ftpbase;', name, '.asc')" /></guid>
 | |
|         <pubDate>
 | |
|           <xsl:call-template name="misc-format-date-string">
 | |
|             <xsl:with-param name="year" select="../../../name" />
 | |
|             <xsl:with-param name="month" select="../../name" />
 | |
|             <xsl:with-param name="day" select="../name" />
 | |
|             <xsl:with-param name="date-format" select="$param-l10n-date-format-rfc822" />
 | |
|           </xsl:call-template>
 | |
|         </pubDate>
 | |
|       </item>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rss-errata-notices"
 | |
|        generate a rdf of 10 most recent errata notices -->
 | |
| 
 | |
|   <xsl:template name="rss-errata-notices">
 | |
|     <xsl:param name="notices.xml" select="''" />
 | |
| 
 | |
|     <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
 | |
|       <channel>
 | |
|         <xsl:call-template name="rss-errata-notices-title">
 | |
| 	  <xsl:with-param name="notices.xml" select="$notices.xml" />
 | |
|         </xsl:call-template>
 | |
|         <xsl:call-template name="rss-errata-notices-items">
 | |
| 	  <xsl:with-param name="notices.xml" select="$notices.xml" />
 | |
|         </xsl:call-template>
 | |
|       </channel>
 | |
|     </rss>
 | |
| 
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rss-errata-notices-title"
 | |
|        pulls in the 10 most recent errata notices -->
 | |
| 
 | |
|   <xsl:template name="rss-errata-notices-title"
 | |
|                 xmlns:atom="http://www.w3.org/2005/Atom">
 | |
|     <xsl:param name="notices.xml" select="''" />
 | |
| 
 | |
|     <xsl:variable name="title">FreeBSD Errata Notices</xsl:variable>
 | |
|     <xsl:variable name="link">http://www.FreeBSD.org/security/</xsl:variable>
 | |
| 
 | |
|     <title><xsl:value-of select="$title" /></title>
 | |
|     <link><xsl:value-of select="$link" /></link>
 | |
|     <description>Errata notices published from the FreeBSD Project</description>
 | |
|     <language>en-us</language>
 | |
|     <webMaster>secteam@FreeBSD.org (FreeBSD Security Team)</webMaster>
 | |
|     <managingEditor>secteam@FreeBSD.org (FreeBSD Security Team)</managingEditor>
 | |
|     <docs>http://blogs.law.harvard.edu/tech/rss</docs>
 | |
|     <ttl>120</ttl>
 | |
|     <image>
 | |
|       <url>http://www.FreeBSD.org/logo/logo-full.png</url>
 | |
|       <title><xsl:value-of select="$title" /></title>
 | |
|       <link><xsl:value-of select="$link" /></link>
 | |
|     </image>
 | |
|     <atom:link rel="self" type="application/rss+xml">
 | |
|       <xsl:attribute name="href">
 | |
|         <xsl:value-of select="$link" /><xsl:text>rss.xml</xsl:text>
 | |
|       </xsl:attribute>
 | |
|     </atom:link> 
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "rss-errata-notices-items"
 | |
|        pulls in the 10 most recent errata notices -->
 | |
| 
 | |
|   <xsl:template name="rss-errata-notices-items"
 | |
|                 xmlns:atom="http://www.w3.org/2005/Atom">
 | |
|     <xsl:param name="notices.xml" select="''" />
 | |
| 
 | |
|     <xsl:for-each select="document($notices.xml)/descendant::notice[position() <= 10]">
 | |
|       <item>
 | |
| 	<title><xsl:value-of select="name"/></title>
 | |
| 	<xsl:choose>
 | |
| 	  <xsl:when test="@omithref = 'yes'">
 | |
| 	    <link>http://www.FreeBSD.org/security</link>
 | |
| 	  </xsl:when>
 | |
| 	  <xsl:otherwise>
 | |
| 	    <link><xsl:value-of select="concat('&ftpbase;', name, '.asc')" /></link>
 | |
| 	  </xsl:otherwise>
 | |
| 	</xsl:choose>
 | |
|         <guid><xsl:value-of select="concat('&ftpbase;', name, '.asc')" /></guid>
 | |
|         <pubDate>
 | |
|           <xsl:call-template name="misc-format-date-string">
 | |
|             <xsl:with-param name="year" select="../../../name" />
 | |
|             <xsl:with-param name="month" select="../../name" />
 | |
|             <xsl:with-param name="day" select="../name" />
 | |
|             <xsl:with-param name="date-format" select="$param-l10n-date-format-rfc822" />
 | |
|           </xsl:call-template>
 | |
|         </pubDate>
 | |
|       </item>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-news-project-items"
 | |
|        pulls in the 5 most recent project items -->
 | |
| 
 | |
|   <xsl:template name="html-index-news-project-items">
 | |
|     <xsl:param name="news.project.xml-master" select="'none'" />
 | |
|     <xsl:param name="news.project.xml" select="'none'" />
 | |
| 
 | |
|     <xsl:for-each select="document($news.project.xml-master)/descendant::day[position() < 5]">
 | |
|       <xsl:variable name="year" select="ancestor::year/name" />
 | |
|       <xsl:variable name="month" select="ancestor::month/name" />
 | |
|       <xsl:variable name="day" select="name" />
 | |
| 
 | |
|       <!-- search localized items per day basis -->
 | |
|       <xsl:variable name="localizeditems"
 | |
| 	select="document($news.project.xml)
 | |
| 	//descendant::year[name = $year]
 | |
| 	/month[name = $month]
 | |
| 	/day[name = $day]" />
 | |
| 
 | |
|       <xsl:choose>
 | |
| 	<xsl:when test="$localizeditems/event">
 | |
| 	  <xsl:for-each select="$localizeditems/event">
 | |
| 	    <xsl:variable name="anchor-position" select="position()" />
 | |
| 
 | |
| 	    <p>
 | |
| 	    <span class="txtdate">
 | |
| 		<xsl:value-of select='
 | |
| 		  concat(format-number($year, "####"), "-",
 | |
| 		  format-number($month, "00"), "-",
 | |
| 		  format-number($day, "00"))' />
 | |
| 	    </span><br />
 | |
| 	    <a>
 | |
| 	      <xsl:attribute name="href">
 | |
| 		<xsl:text>news/newsflash.html#</xsl:text>
 | |
| 		<xsl:call-template name="html-news-generate-anchor">
 | |
| 		  <xsl:with-param name="label" select="'event'" />
 | |
| 		  <xsl:with-param name="year" select="$year" />
 | |
| 		  <xsl:with-param name="month" select="$month" />
 | |
| 		  <xsl:with-param name="day" select="$day" />
 | |
| 		  <xsl:with-param name="pos" select="$anchor-position" />
 | |
| 		</xsl:call-template>
 | |
| 	      </xsl:attribute>
 | |
| 
 | |
| 	      <xsl:choose>
 | |
| 		<xsl:when test="count(child::title)">
 | |
| 		  <xsl:value-of select="title"/><br/>
 | |
| 		</xsl:when>
 | |
| 		<xsl:otherwise>
 | |
| 		  <xsl:value-of select="p"/><br/>
 | |
| 		</xsl:otherwise>
 | |
| 	      </xsl:choose>
 | |
| 	    </a>
 | |
| 	    </p>
 | |
| 	  </xsl:for-each>
 | |
| 	</xsl:when>
 | |
| 
 | |
| 	<xsl:otherwise>
 | |
| 	  <xsl:for-each select="event">
 | |
| 	    <xsl:variable name="anchor-position" select="position()" />
 | |
| 
 | |
| 	    <p>
 | |
| 	    <span class="txtdate">
 | |
| 	      <xsl:value-of select='
 | |
| 		  concat(format-number($year, "####"), "-",
 | |
| 		  format-number($month, "00"), "-",
 | |
| 		  format-number($day, "00"))' />
 | |
| 	    </span><br />
 | |
| 	    <a>
 | |
| 	      <xsl:attribute name="href">
 | |
| 		<xsl:text>news/newsflash.html#</xsl:text>
 | |
| 		<xsl:call-template name="html-news-generate-anchor">
 | |
| 		  <xsl:with-param name="label" select="'event'" />
 | |
| 		  <xsl:with-param name="year" select="$year" />
 | |
| 		  <xsl:with-param name="month" select="$month" />
 | |
| 		  <xsl:with-param name="day" select="$day" />
 | |
| 		  <xsl:with-param name="pos" select="$anchor-position" />
 | |
| 		</xsl:call-template>
 | |
| 	      </xsl:attribute>
 | |
| 
 | |
| 	      <xsl:choose>
 | |
| 		<xsl:when test="count(child::title)">
 | |
| 		  <xsl:value-of select="title"/><br/>
 | |
| 		</xsl:when>
 | |
| 		<xsl:otherwise>
 | |
| 		  <xsl:value-of select="p"/><br/>
 | |
| 		</xsl:otherwise>
 | |
| 	      </xsl:choose>
 | |
| 	    </a>
 | |
| 	    </p>
 | |
| 	  </xsl:for-each>
 | |
| 	</xsl:otherwise>
 | |
|       </xsl:choose>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-news-project-items-lastmodified" -->
 | |
| 
 | |
|   <xsl:template name="html-index-news-project-items-lastmodified">
 | |
|     <xsl:param name="news.project.xml-master" select="''" />
 | |
| 
 | |
|     <xsl:call-template name="misc-format-date-string">
 | |
|       <xsl:with-param name="year"
 | |
| 	select="document($news.project.xml-master)/descendant::year[position() = 1]/name" />
 | |
|       <xsl:with-param name="month"
 | |
| 	select="document($news.project.xml-master)/descendant::month[position() = 1]/name" />
 | |
|       <xsl:with-param name="day"
 | |
| 	select="document($news.project.xml-master)/descendant::day[position() = 1]/name" />
 | |
|     </xsl:call-template>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-news-press-items"
 | |
|        pulls in the 5 most recent press items -->
 | |
| 
 | |
|   <xsl:template name="html-index-news-press-items">
 | |
|     <xsl:param name="news.press.xml-master" select="'none'" />
 | |
|     <xsl:param name="news.press.xml" select="''" />
 | |
| 
 | |
|     <xsl:for-each select="document($news.press.xml-master)/descendant::story[position() <= 5]">
 | |
|       <xsl:variable name="year" select="../../name" />
 | |
|       <xsl:variable name="month" select="../name" />
 | |
|       <xsl:variable name="day" select="../name" />
 | |
|       <xsl:variable name="url" select="url" />
 | |
|       <xsl:variable name="site-url" select="site-url" />
 | |
| 
 | |
|       <xsl:variable name="pos">
 | |
| 	<xsl:for-each select="../story">
 | |
| 	  <xsl:if test="url = $url">
 | |
| 	    <xsl:value-of select="position()" />
 | |
| 	  </xsl:if>
 | |
| 	</xsl:for-each>
 | |
|       </xsl:variable>
 | |
| 
 | |
|       <!-- search localized items per story(URL) basis -->
 | |
|       <xsl:variable name="localizeditems"
 | |
| 	select="document($news.press.xml)
 | |
| 	//descendant::year[name = $year]
 | |
| 	/month[name = $month]
 | |
| 	/story[url = $url]" />
 | |
|       
 | |
|       <p>
 | |
|       <span class="txtdate">
 | |
| 	<xsl:value-of select='
 | |
| 	    concat(format-number($year, "####"), "-",
 | |
| 	    format-number($month, "00"))' />
 | |
|       </span><br />
 | |
|       <a>
 | |
| 	<xsl:attribute name="href">
 | |
| 	  <xsl:text>news/press.html#</xsl:text>
 | |
| 	  <xsl:call-template name="html-news-generate-anchor">
 | |
| 	    <xsl:with-param name="label" select="'story'" />
 | |
| 	    <xsl:with-param name="year" select="$year" />
 | |
| 	    <xsl:with-param name="month" select="$month" />
 | |
| 	    <xsl:with-param name="pos" select="$pos" />
 | |
| 	  </xsl:call-template>
 | |
| 	</xsl:attribute>
 | |
| 
 | |
| 	<xsl:choose>
 | |
| 	  <xsl:when test="$localizeditems">
 | |
| 	    <xsl:value-of select="$localizeditems/name"/>
 | |
| 	  </xsl:when>
 | |
| 
 | |
| 	  <xsl:otherwise>
 | |
| 	    <xsl:value-of select="name"/>
 | |
| 	  </xsl:otherwise>
 | |
| 	</xsl:choose>
 | |
|       </a></p>
 | |
|       
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-news-press-items-lastmodified" -->
 | |
| 
 | |
|   <xsl:template name="html-index-news-press-items-lastmodified">
 | |
|     <xsl:param name="news.press.xml-master" select="''" />
 | |
| 
 | |
|     <xsl:call-template name="misc-format-date-string">
 | |
|       <xsl:with-param name="year"
 | |
| 	select="document($news.press.xml-master)/descendant::year[position() = 1]/name" />
 | |
|       <xsl:with-param name="month"
 | |
| 	select="document($news.press.xml-master)/descendant::month[position() = 1]/name" />
 | |
|       <xsl:with-param name="date-format"
 | |
| 	select="$param-l10n-date-format-YM" />
 | |
|     </xsl:call-template>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-navigation-link-list"
 | |
|        generates navigation bar in index.html -->
 | |
| 
 | |
|   <xsl:template name="html-index-navigation-link-list">
 | |
|     <xsl:param name="navigation.xml" select="''" />
 | |
|     <xsl:for-each select="document($navigation.xml)/navigation/category">
 | |
|       <p>
 | |
| 	<xsl:choose>
 | |
| 	  <xsl:when test="boolean(@src)">
 | |
| 	  <a>
 | |
| 	    <xsl:attribute name="href">
 | |
| 	      <xsl:choose>
 | |
| 		<xsl:when test="@path = 'base'">&base;/</xsl:when>
 | |
| 		<xsl:when test="@path = 'enbase'">&enbase;/</xsl:when>
 | |
| 	      </xsl:choose>
 | |
| 	      <xsl:value-of select="@src"/>
 | |
| 	    </xsl:attribute>
 | |
| 	    <font size="+1" color="#990000"><b><xsl:value-of select="@name"/></b></font>
 | |
| 	  </a>
 | |
| 	  </xsl:when>
 | |
| 
 | |
| 	  <xsl:otherwise>
 | |
| 	    <font size="+1" color="#990000"><b><xsl:value-of select="@name"/></b></font>
 | |
| 	  </xsl:otherwise>
 | |
| 	</xsl:choose>
 | |
| 	<br/>
 | |
| 	<small>
 | |
| 	  <xsl:apply-templates select="link"/>
 | |
| 	</small>
 | |
|       </p>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "link" generates links inside of category -->
 | |
|   <xsl:template match="link">
 | |
|     <xsl:value-of select="$leadingmark" />
 | |
|     <a>
 | |
|       <xsl:attribute name="href">
 | |
| 	<xsl:choose>
 | |
| 	  <xsl:when test="@path = 'base'">&base;/</xsl:when>
 | |
| 	  <xsl:when test="@path = 'enbase'">&enbase;/</xsl:when>
 | |
| 	</xsl:choose>
 | |
| 	<xsl:value-of select="@src"/>
 | |
|       </xsl:attribute>
 | |
|       <xsl:value-of select="@name"/></a><br/>
 | |
|   </xsl:template>
 | |
|   
 | |
|  <!-- template: "html-index-events-items"
 | |
|        pulls in the 5 most recent events items -->
 | |
| 
 | |
|   <xsl:template name="html-index-events-items">
 | |
|     <xsl:param name="events.xml-master" select="'none'" />
 | |
|     <xsl:param name="events.xml" select="''" />
 | |
| 
 | |
|     <xsl:for-each select="document($events.xml-master)/descendant::event[
 | |
| 									   ((number(enddate/year) > number($curdate.year)) or
 | |
| 								            (number(enddate/year) = number($curdate.year) and
 | |
| 								             number(enddate/month) > number($curdate.month)) or
 | |
| 						          		    (number(enddate/year) = number($curdate.year) and
 | |
| 								             number(enddate/month) = number($curdate.month) and
 | |
| 						   	            	     enddate/day >= $curdate.day))]">
 | |
|       <xsl:sort select="startdate/year" order="ascending"/>
 | |
|       <xsl:sort select="format-number(startdate/month, '00')" order="ascending"/>
 | |
|       <xsl:sort select="format-number(startdate/day, '00')" order="ascending"/>
 | |
| 
 | |
|       <xsl:if test="position() <= 5">
 | |
| 
 | |
|       <p>
 | |
|       <span class="txtdate">
 | |
|          <xsl:value-of select='
 | |
| 	    concat(format-number(startdate/year, "####"), "-",
 | |
| 	    format-number(startdate/month, "00"), "-",
 | |
| 	    format-number(startdate/day, "00"), " -  ",
 | |
| 	    format-number(enddate/year, "####"), "-",
 | |
| 	    format-number(enddate/month, "00"), "-",
 | |
| 	    format-number(enddate/day, "00"))' />
 | |
|       </span><br />
 | |
|       <a>
 | |
|         <xsl:attribute name="href">
 | |
| 	  <xsl:choose>
 | |
| 	    <xsl:when test="$events.xml = 'none'">&enbase;/</xsl:when>
 | |
| 	    <xsl:otherwise>&base;/</xsl:otherwise>
 | |
| 	  </xsl:choose>
 | |
| 	  <xsl:text>events/#</xsl:text>
 | |
| 	  <xsl:call-template name="generate-event-anchor"/>
 | |
|         </xsl:attribute>
 | |
| 
 | |
|         <xsl:value-of select="name"/>
 | |
| 
 | |
| 	<br />
 | |
| 	<xsl:if test="location/city!='' and location/country!=''">
 | |
| 	  (<xsl:value-of select='location/city' />, <xsl:value-of select='location/country' />)
 | |
| 	</xsl:if>
 | |
|       </a></p>
 | |
|     </xsl:if>
 | |
|     </xsl:for-each>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- template: "html-index-mirrors-options-list"
 | |
|        generates mirror sites list in index.html -->
 | |
| 
 | |
|   <xsl:template name="html-index-mirrors-options-list">
 | |
|     <xsl:param name="mirrors.xml" select="''" />
 | |
| 
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$mirrors.xml = ''">
 | |
| 	<option value="NONE">
 | |
| 	  **No Data**
 | |
| 	</option>
 | |
|       </xsl:when>
 | |
| 
 | |
|       <xsl:otherwise>
 | |
| 	<xsl:for-each select="document($mirrors.xml)/mirrors/entry[
 | |
|                               (not(country/@role) or country/@role != 'primary') and
 | |
|                               host[@type = 'www']/url[@proto = 'httpv6']]">
 | |
| 	  <xsl:sort select="country/@sortkey" data-type="number" />
 | |
| 	  <xsl:sort select="country" />
 | |
| 
 | |
| 	  <xsl:for-each select="host[@type = 'www']/url[@proto = 'httpv6']">
 | |
| 	    <option><xsl:attribute name="value"><xsl:value-of select="." /></xsl:attribute>
 | |
| 	      <xsl:choose>
 | |
| 		<xsl:when test="last() = 1">
 | |
| 		  <xsl:value-of select="concat('IPv6 ', ../../country)" />
 | |
| 		</xsl:when>
 | |
| 		<xsl:otherwise>
 | |
| 		  <xsl:value-of select="concat('IPv6 ', ../../country, '/', position())" />
 | |
| 		</xsl:otherwise>
 | |
| 	      </xsl:choose>
 | |
| 	    </option>
 | |
| 	  </xsl:for-each>
 | |
| 	</xsl:for-each>
 | |
| 
 | |
| 	<xsl:for-each select="document($mirrors.xml)/mirrors/entry[
 | |
|                               (not(country/@role) or country/@role != 'primary') and
 | |
|                               host[@type = 'www']/url[@proto = 'http']]">
 | |
| 	  <xsl:sort select="country/@sortkey" data-type="number" />
 | |
| 	  <xsl:sort select="country" />
 | |
| 
 | |
| 	  <xsl:for-each select="host[@type = 'www']/url[@proto = 'http']">
 | |
| 	    <option><xsl:attribute name="value"><xsl:value-of select="." /></xsl:attribute>
 | |
| 	      <xsl:choose>
 | |
| 		<xsl:when test="last() = 1">
 | |
| 		  <xsl:value-of select="../../country" />
 | |
| 		</xsl:when>
 | |
| 		<xsl:otherwise>
 | |
| 		  <xsl:value-of select="concat(../../country, '/', position())" />
 | |
| 		</xsl:otherwise>
 | |
| 	      </xsl:choose>
 | |
| 	    </option>
 | |
| 	  </xsl:for-each>
 | |
| 	</xsl:for-each>
 | |
|       </xsl:otherwise>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- Generate a unique anchor for this event. -->
 | |
|   <xsl:template name="generate-event-anchor">
 | |
|     <xsl:text>event</xsl:text>
 | |
|     <xsl:value-of select="ancestor::year/name"/>
 | |
|     <xsl:value-of select="ancestor::month/name"/>
 | |
|     <xsl:value-of select="ancestor::day/name"/>:<xsl:value-of select="count(preceding-sibling::event)"/>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- Generate a unique anchor for this story -->
 | |
|   <xsl:template name="generate-story-anchor">
 | |
|     <xsl:text>story</xsl:text>
 | |
|     <xsl:value-of select="ancestor::year/name"/>
 | |
|     <xsl:value-of select="ancestor::month/name"/>:<xsl:text/>
 | |
|     <xsl:value-of select="count(following-sibling::story)"/>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- Convert a month number to the corresponding long English name. -->
 | |
|   <xsl:template name="gen-long-en-month">
 | |
|     <xsl:param name="nummonth"/>
 | |
|     <xsl:variable name="month" select="number($nummonth)"/>
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$month=1">January</xsl:when>
 | |
|       <xsl:when test="$month=2">February</xsl:when>
 | |
|       <xsl:when test="$month=3">March</xsl:when>
 | |
|       <xsl:when test="$month=4">April</xsl:when>
 | |
|       <xsl:when test="$month=5">May</xsl:when>
 | |
|       <xsl:when test="$month=6">June</xsl:when>
 | |
|       <xsl:when test="$month=7">July</xsl:when>
 | |
|       <xsl:when test="$month=8">August</xsl:when>
 | |
|       <xsl:when test="$month=9">September</xsl:when>
 | |
|       <xsl:when test="$month=10">October</xsl:when>
 | |
|       <xsl:when test="$month=11">November</xsl:when>
 | |
|       <xsl:when test="$month=12">December</xsl:when>
 | |
|       <xsl:otherwise>Invalid month</xsl:otherwise>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- Convert a month number to the corresponding short English name. -->
 | |
|   <xsl:template name="gen-short-en-month">
 | |
|     <xsl:param name="nummonth"/>
 | |
|     <xsl:variable name="month" select="number($nummonth)"/>
 | |
|     <xsl:choose>
 | |
|       <xsl:when test="$month=1">Jan</xsl:when>
 | |
|       <xsl:when test="$month=2">Feb</xsl:when>
 | |
|       <xsl:when test="$month=3">Mar</xsl:when>
 | |
|       <xsl:when test="$month=4">Apr</xsl:when>
 | |
|       <xsl:when test="$month=5">May</xsl:when>
 | |
|       <xsl:when test="$month=6">Jun</xsl:when>
 | |
|       <xsl:when test="$month=7">Jul</xsl:when>
 | |
|       <xsl:when test="$month=8">Aug</xsl:when>
 | |
|       <xsl:when test="$month=9">Sep</xsl:when>
 | |
|       <xsl:when test="$month=10">Oct</xsl:when>
 | |
|       <xsl:when test="$month=11">Nov</xsl:when>
 | |
|       <xsl:when test="$month=12">Dec</xsl:when>
 | |
|       <xsl:otherwise>Invalid month</xsl:otherwise>
 | |
|     </xsl:choose>
 | |
|   </xsl:template>
 | |
| 
 | |
|   <!-- Generate a date interval. -->
 | |
|   <!-- Sample: 27 November, 2002 - 29 December, 2003 -->
 | |
|   <xsl:template name="gen-date-interval">
 | |
|     <xsl:param name="startdate"/>
 | |
|     <xsl:param name="enddate"/>
 | |
| 
 | |
|     <xsl:value-of select="startdate/day"/>
 | |
| 
 | |
|     <xsl:if test="number(startdate/month) != number(enddate/month) or
 | |
| 		  number(startdate/day) != number(enddate/day) or
 | |
| 		  number(startdate/year) != number(enddate/year)">
 | |
| 
 | |
|       <xsl:if test="number(startdate/month) != number(enddate/month) or
 | |
| 		    number(startdate/year) != number(enddate/year)">
 | |
| 	<xsl:text> </xsl:text>
 | |
| 	<xsl:call-template name="gen-long-en-month">
 | |
| 	  <xsl:with-param name="nummonth" select="startdate/month"/>
 | |
| 	</xsl:call-template>
 | |
|       </xsl:if>
 | |
| 
 | |
|       <xsl:if test="number(startdate/year) != number(enddate/year)">
 | |
| 	<xsl:text>, </xsl:text>
 | |
| 	<xsl:value-of select="startdate/year"/>
 | |
|       </xsl:if>
 | |
|       <xsl:text> - </xsl:text>
 | |
| 
 | |
|       <xsl:if test="number(startdate/day) != number(enddate/day) or
 | |
| 		    number(startdate/month) != number(enddate/month) or
 | |
| 		    number(startdate/year) != number(enddate/year)">
 | |
| 	<xsl:value-of select="enddate/day"/>
 | |
|       </xsl:if>
 | |
|     </xsl:if>
 | |
| 
 | |
|     <xsl:text> </xsl:text>
 | |
|     <xsl:call-template name="gen-long-en-month">
 | |
|       <xsl:with-param name="nummonth" select="enddate/month"/>
 | |
|     </xsl:call-template>
 | |
| 
 | |
|     <xsl:text>, </xsl:text>
 | |
|     <xsl:value-of select="enddate/year"/>
 | |
|   </xsl:template>
 | |
| </xsl:stylesheet>
 |