todo.xsl (144 lines of code) (raw):

<?xml version="1.0"?> <!-- * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:variable name="title" select="concat(todo/@project, ' ', todo/@major-version)"/> <xsl:template match="/"> <HTML> <HEAD> <TITLE><xsl:value-of select="$title"/></TITLE> </HEAD> <BODY> <H2><xsl:value-of select="concat($title, ': ', todo/@title)"/></H2> <p><font size="-1">See a <xsl:element name="a"> <xsl:attribute name="href">#developer-list</xsl:attribute> <xsl:text>list of developers/initials.</xsl:text> </xsl:element> </font></p> <font size="-1"><p>Planned releases: <BR/><xsl:for-each select="todo/actions/target-release-description"> <xsl:element name="a"> <xsl:attribute name="href">#release-date-<xsl:value-of select="date"/></xsl:attribute> <xsl:value-of select="date"/> </xsl:element><xsl:text> </xsl:text><xsl:text> </xsl:text> </xsl:for-each> <xsl:element name="a"> <xsl:attribute name="href">#release-date-completed</xsl:attribute> <xsl:text>Completed</xsl:text> </xsl:element> </p></font> <xsl:for-each select="todo"> <xsl:for-each select="actions"> <xsl:for-each select="target-release-description"> <p> <xsl:apply-templates/> </p> </xsl:for-each> <xsl:for-each select="action"> <xsl:if test="normalize-space(.)"> <p> <xsl:number/>) <xsl:apply-templates/> <xsl:if test="@*"> <BR/> </xsl:if> <xsl:apply-templates select="@*"/> </p> </xsl:if> </xsl:for-each> <HR/> </xsl:for-each> <xsl:for-each select="completed"> <xsl:element name="a"> <xsl:attribute name="name">release-date-completed</xsl:attribute> <H3>Completed: </H3> </xsl:element> <xsl:for-each select="action"> <xsl:if test="normalize-space(.)"> <p> <xsl:number/>) <xsl:apply-templates/> <xsl:if test="@*"> <BR/> </xsl:if> <xsl:apply-templates select="@*"/> </p> </xsl:if> </xsl:for-each> <HR/> </xsl:for-each> <xsl:call-template name="developer-list"/> </xsl:for-each> </BODY> </HTML> </xsl:template> <xsl:template match="action/@*"> <!-- Add link to the who attributes to corresponding item in developer-list --> <b><xsl:value-of select="name(.)"/>:</b><xsl:text> </xsl:text> <xsl:choose> <xsl:when test="name(.)='who'"> <xsl:element name="a"> <xsl:attribute name="href">#personref-<xsl:value-of select="."/></xsl:attribute> <xsl:value-of select="."/> </xsl:element> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> <xsl:if test="not (position()=last())"> <xsl:text>, </xsl:text> </xsl:if> </xsl:template> <xsl:template match="target-release-description/date"> <xsl:element name="a"> <xsl:attribute name="name">release-date-<xsl:value-of select="."/></xsl:attribute> <b><xsl:text>For release: </xsl:text><xsl:value-of select="."/></b> </xsl:element> </xsl:template> <xsl:template match="issue"> <BR/><b>Issue </b><xsl:text>[</xsl:text><xsl:value-of select="@id"/> <xsl:text>]: </xsl:text> <xsl:apply-templates/> </xsl:template> <xsl:template match="target-release-description/level"> <xsl:text>, </xsl:text><xsl:apply-templates/> </xsl:template> <xsl:template match="target-release-description/goal"> <BR/><b>Goal </b><xsl:text>[</xsl:text><xsl:value-of select="@type"/> <xsl:text>]: </xsl:text> <xsl:apply-templates/> </xsl:template> <xsl:template name="developer-list"> <H3> <xsl:element name="a"> <xsl:attribute name="name">developer-list</xsl:attribute> <xsl:text>Developers:</xsl:text> </xsl:element> </H3> <p>A list of some of the people currently working on <xsl:value-of select="/todo/@project"/>:</p> <ul> <xsl:for-each select="devs/person[not(@status = 'emeritus')]"> <li> <xsl:apply-templates select="."/> </li> </xsl:for-each> </ul> <xsl:if test="boolean(devs/person[@status = 'emeritus'])"> <p>And the Hall-of-Fame list of past developers:</p> <ul> <xsl:for-each select="devs/person[@status = 'emeritus']"> <li> <xsl:apply-templates select="."/> </li> </xsl:for-each> </ul> </xsl:if> </xsl:template> <xsl:template match="person"> <a href="mailto:{@email}"> <xsl:value-of select="@name"/> </a> <xsl:element name="a"> <xsl:attribute name="name"><xsl:text>personref-</xsl:text><xsl:value-of select="@id"/></xsl:attribute> <xsl:text> (</xsl:text><xsl:value-of select="@id"/><xsl:text>)</xsl:text> </xsl:element> <BR/><xsl:value-of select="."/> </xsl:template> </xsl:stylesheet>