Mercurial > pub > buggler
diff bug-list.xsl @ 0:8cae44c166d3
initial xslt and sample xml
author | cin |
---|---|
date | Thu, 20 Aug 2015 20:54:19 +0300 |
parents | |
children | d1400de5832b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bug-list.xsl Thu Aug 20 20:54:19 2015 +0300 @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output method="text" /> + <xsl:key name="bugs-key" match="bug" use="bug_id" /> + <xsl:variable name="roots" select="bugzilla/bug[not(blocked[key('bugs-key',.)])]"/> + + <xsl:template match="/"> + <xsl:apply-templates select="$roots"/> + </xsl:template> + + <xsl:template match="bug"> + <xsl:call-template name="bug-template" /> + </xsl:template> + + <xsl:template match="text()" /> + + <xsl:template name="bug-template"> + <xsl:param name="indent" select="0" /> + <xsl:variable name="isOrganizing" select="component = 'product'"></xsl:variable> + + <xsl:call-template name="start-task"> + <xsl:with-param name="indent" select="$indent" /> + </xsl:call-template> + + <xsl:if test="$isOrganizing"> + + </xsl:if> + + <xsl:choose> + <xsl:when test="$isOrganizing"> + <xsl:for-each select="dependson"> + <xsl:for-each select="key('bugs-key', .)"> + <xsl:call-template name="bug-template"> + <xsl:with-param name="indent" select="$indent + 1" /> + </xsl:call-template> + </xsl:for-each> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="number(estimated_time)"> + <xsl:call-template name="begin-line"> + <xsl:with-param name="indent" select="$indent + 1" /> + </xsl:call-template> + <xsl:value-of select="concat('effort ', estimated_time, 'h')" /> + <xsl:call-template name="end-line" /> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + + <xsl:call-template name="end-task"> + <xsl:with-param name="indent" select="$indent" /> + </xsl:call-template> + </xsl:template> + + <xsl:template name="make-bug-id"> + <xsl:param name="id"></xsl:param> + <xsl:value-of select="concat('bug', $id)"></xsl:value-of> + </xsl:template> + + <xsl:template name="start-task"> + <xsl:param name="indent" /> + <xsl:call-template name="begin-line"> + <xsl:with-param name="indent" select="$indent" /> + </xsl:call-template> + <xsl:text>task </xsl:text> + <xsl:call-template name="make-bug-id"> + <xsl:with-param name="id" select="bug_id" /> + </xsl:call-template> + <xsl:value-of select="concat(' "',short_desc,'" {')" /> + <xsl:call-template name="end-line" /> + </xsl:template> + + <xsl:template name="end-task"> + <xsl:param name="indent" /> + <xsl:call-template name="begin-line"> + <xsl:with-param name="indent" select="$indent" /> + </xsl:call-template> + <xsl:text>}</xsl:text> + <xsl:call-template name="end-line" /> + </xsl:template> + + <xsl:template name="begin-line"> + <xsl:param name="indent" /> + <xsl:if test="number($indent) > 0"> + <xsl:text> </xsl:text> + <xsl:call-template name="begin-line"> + <xsl:with-param name="indent" select="$indent - 1" /> + </xsl:call-template> + </xsl:if> + </xsl:template> + <xsl:template name="end-line"> + <xsl:text>
</xsl:text> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file