- Replace /XML/{doc,www}/ with /XML/ in SysId.
- Remove empty stylesheets in share/xsl and point share/xml/empty.xsl via
  XML catalog instead.
- Change the L10N layer in freebsd-*.xsl not to use localized XSLT
  stylesheets directly.
- Move share/xsl/* to share/xml and remove share/xsl.
- Remove obsolete share/web2c/pdftex.def.
		
	
			
		
			
				
	
	
		
			118 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<!DOCTYPE xsl:stylesheet PUBLIC "-//FreeBSD//DTD FreeBSD XSLT 1.0 DTD Fragment//EN"
 | 
						|
				"http://www.FreeBSD.org/XML/share/xml/xslt10-freebsd.dtd" [
 | 
						|
]>
 | 
						|
 | 
						|
<!-- $FreeBSD$ -->
 | 
						|
 | 
						|
<!-- Copyright (c) 2005 Ceri Davies <ceri@FreeBSD.org>
 | 
						|
     All rights reserved.
 | 
						|
 | 
						|
     Redistribution and use in source and binary forms, with or without
 | 
						|
     modification, are permitted provided that the following conditions
 | 
						|
     are met:
 | 
						|
     1. Redistributions of source code must retain the above copyright
 | 
						|
	notice, this list of conditions and the following disclaimer.
 | 
						|
     2. Redistributions in binary form must reproduce the above copyright
 | 
						|
	notice, this list of conditions and the following disclaimer in the
 | 
						|
	documentation and/or other materials provided with the distribution.
 | 
						|
 | 
						|
     THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
						|
     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
						|
     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
						|
     ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
						|
     FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
						|
     DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
						|
     OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
						|
     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
						|
     LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
						|
     OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
						|
     SUCH DAMAGE.
 | 
						|
-->
 | 
						|
 | 
						|
<!-- Generate an iCalendar file from a www/en/events/events.dtd
 | 
						|
  compliant events.xml -->
 | 
						|
 | 
						|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
 | 
						|
  xmlns:cvs="http://www.FreeBSD.org/XML/CVS"
 | 
						|
  exclude-result-prefixes="cvs">
 | 
						|
  <xsl:import href="http://www.FreeBSD.org/XML/lang/share/xml/libcommon.xsl"/>
 | 
						|
 | 
						|
  <xsl:variable name="freebsd-web-base" select="'http://www.FreeBSD.org'"/>
 | 
						|
 | 
						|
  <xsl:output method="text" encoding="&xml.encoding;"/>
 | 
						|
  <xsl:strip-space elements="*"/>
 | 
						|
 | 
						|
  <!-- Template: events -->
 | 
						|
  <xsl:template match="events">BEGIN:VCALENDAR
 | 
						|
VERSION:2.0
 | 
						|
PRODID:$FreeBSD$
 | 
						|
    <xsl:apply-templates select="event"/>
 | 
						|
END:VCALENDAR</xsl:template>
 | 
						|
 | 
						|
  <!-- Template: event -->
 | 
						|
  <xsl:template match="event">
 | 
						|
BEGIN:VEVENT
 | 
						|
SEQUENCE:<xsl:value-of select="position()" />
 | 
						|
SUMMARY:<xsl:value-of select="name"/>
 | 
						|
    <xsl:if test="url">
 | 
						|
      <xsl:apply-templates select="url"/>
 | 
						|
    </xsl:if>
 | 
						|
LOCATION:<xsl:if test="location/site!=''">
 | 
						|
      <xsl:value-of select="location/site"/>
 | 
						|
    </xsl:if>
 | 
						|
    <xsl:if test="location/city!=''">
 | 
						|
      <xsl:text>, </xsl:text>
 | 
						|
      <xsl:value-of select="location/city"/>
 | 
						|
    </xsl:if>
 | 
						|
    <xsl:if test="location/state!=''">
 | 
						|
      <xsl:text>, </xsl:text>
 | 
						|
      <xsl:value-of select="location/state"/>
 | 
						|
    </xsl:if>
 | 
						|
    <xsl:if test="location/country!=''">
 | 
						|
      <xsl:text>, </xsl:text>
 | 
						|
      <xsl:value-of select="location/country"/>
 | 
						|
    </xsl:if>
 | 
						|
    <xsl:call-template name="gen-ical-date-interval">
 | 
						|
      <xsl:with-param name="startdate" select="startdate" />
 | 
						|
      <xsl:with-param name="enddate" select="enddate" />
 | 
						|
    </xsl:call-template>
 | 
						|
DESCRIPTION:<xsl:copy-of select="description/child::node()"/>
 | 
						|
    <xsl:if test="link">
 | 
						|
      <xsl:apply-templates select="link"/>
 | 
						|
    </xsl:if>
 | 
						|
END:VEVENT</xsl:template>
 | 
						|
 | 
						|
  <!-- Template: link -->
 | 
						|
  <xsl:template match="link">
 | 
						|
    <xsl:apply-templates select="url"/>
 | 
						|
  </xsl:template>
 | 
						|
 | 
						|
  <!-- Template: url -->
 | 
						|
  <xsl:template match="url">
 | 
						|
URL;VALUE=URI:<xsl:choose>
 | 
						|
      <xsl:when test="@type='freebsd-website'">
 | 
						|
        <xsl:value-of select="$freebsd-web-base"/>
 | 
						|
      </xsl:when>
 | 
						|
    </xsl:choose>
 | 
						|
    <xsl:value-of select="."/>
 | 
						|
  </xsl:template>
 | 
						|
 | 
						|
  <!-- Generate iCalendar DTSTART and DTEND entries -->
 | 
						|
  <xsl:template name="gen-ical-date-interval">
 | 
						|
    <xsl:param name="startdate"/>
 | 
						|
    <xsl:param name="enddate"/>
 | 
						|
 | 
						|
DTSTART;VALUE=DATE:<xsl:value-of select="concat(startdate/year,
 | 
						|
	    format-number(startdate/month, '00'),
 | 
						|
	    format-number(startdate/day, '00'))"/>
 | 
						|
 | 
						|
    <xsl:if test="number(startdate/month) != number(enddate/month) or
 | 
						|
		  number(startdate/day) != number(enddate/day) or
 | 
						|
		  number(startdate/year) != number(enddate/year)">
 | 
						|
DTEND;VALUE=DATE:<xsl:value-of select="concat(enddate/year,
 | 
						|
	format-number(enddate/month, '00'),
 | 
						|
	format-number(enddate/day, '00'))"/>
 | 
						|
 | 
						|
     </xsl:if>
 | 
						|
  </xsl:template>
 | 
						|
</xsl:stylesheet>
 |