blob: 15ee1f978dd263968fc5c8cd2e03ea5701876c6e [file] [log] [blame]
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<document>
<xsl:apply-templates select="*/node()"/>
</document>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tests">
<table class="tests">
<tr class="tests-header">
<td rowspan="{count(test) + 1}">
<xsl:attribute name="class">
<xsl:text>vertical-bar </xsl:text>
<xsl:choose>
<xsl:when test="@status"><xsl:value-of select="@status"/></xsl:when>
<xsl:when test="yes">yes</xsl:when>
<xsl:when test="partial">partial</xsl:when>
<xsl:when test="no">no</xsl:when>
<xsl:when test="not(*/yes) and not(*/partial) and */no">no</xsl:when>
<xsl:when test="*/partial or */partial and */no or */yes and */no">partial</xsl:when>
<xsl:otherwise>yes</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</td>
<th>
SVG 1.1 test suite
</th>
<th/>
<th/>
</tr>
<xsl:if test="notes">
<tr class="section-note">
<td></td>
<td></td>
<td>
<xsl:apply-templates select="notes"/>
</td>
</tr>
</xsl:if>
<xsl:apply-templates>
<xsl:sort select="@name"/>
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="elements | interfaces">
<table class="elements">
<xsl:apply-templates>
<xsl:sort select="@ns"/>
<xsl:sort select="@name"/>
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="object">
<div class="object">
<div class="object-header">
<xsl:value-of select="@name"/>
</div>
<xsl:if test="prop">
<div class="object-section-header">Properties</div>
<xsl:apply-templates select="prop">
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:if>
<xsl:if test="func">
<div class="object-section-header">Function properties</div>
<xsl:apply-templates select="func">
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:if>
</div>
</xsl:template>
<xsl:template match="object/prop">
<div class="object-property-header">
<xsl:value-of select="@name"/>
</div>
<div class="object-property-desc">
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="object/func">
<div class="object-property-header">
<xsl:value-of select="@name"/>
<span class="object-property-func-params">
<xsl:text>(</xsl:text>
<xsl:value-of select="@params"/>
<xsl:text>)</xsl:text>
</span>
</div>
<div class="object-property-desc">
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="element | interface">
<tr class="element-header">
<td rowspan="{count(attr | prop | op) + number(boolean(attr)) + number(boolean(prop)) + number(boolean(op)) + number(boolean(notes))+ 1}">
<xsl:attribute name="class">
<xsl:text>vertical-bar </xsl:text>
<xsl:choose>
<xsl:when test="@status"><xsl:value-of select="@status"/></xsl:when>
<xsl:when test="yes">yes</xsl:when>
<xsl:when test="partial">partial</xsl:when>
<xsl:when test="no">no</xsl:when>
<xsl:when test="not(*/yes) and not(*/partial) and */no">no</xsl:when>
<xsl:when test="*/partial or */partial and */no or */yes and */no">partial</xsl:when>
<xsl:otherwise>yes</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</td>
<th>
<xsl:variable name="element-name">
<xsl:call-template name="qname">
<xsl:with-param name="name" select="@name"/>
<xsl:with-param name="ns" select="string(@ns)"/>
<xsl:with-param name="prefixes" select="../prefixes"/>
</xsl:call-template>
</xsl:variable>
<a name="{$element-name}"/>
<xsl:value-of select="$element-name"/>
</th>
<th/>
<th/>
</tr>
<xsl:if test="notes">
<tr class="section-note">
<td></td>
<td></td>
<td>
<xsl:apply-templates select="notes"/>
</td>
</tr>
</xsl:if>
<xsl:if test="attr">
<tr class="section-header">
<th colspan="3">Attributes</th>
</tr>
<xsl:apply-templates select="attr">
<xsl:sort select="@ns"/>
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:if>
<xsl:if test="prop">
<tr class="section-header">
<th colspan="3">Properties</th>
</tr>
<xsl:apply-templates select="prop"/>
</xsl:if>
<xsl:if test="op">
<tr class="section-header">
<th colspan="3">Operations</th>
</tr>
<xsl:apply-templates select="op"/>
</xsl:if>
</xsl:template>
<xsl:template match="attr | element/prop | op | test">
<tr class="attribute">
<th class="attribute-name">
<xsl:choose>
<xsl:when test="local-name() = 'attr' and parent::element">
<xsl:call-template name="qname">
<xsl:with-param name="name" select="@name"/>
<xsl:with-param name="ns" select="@ns"/>
<xsl:with-param name="prefixes" select="../../prefixes"/>
</xsl:call-template>
</xsl:when>
<xsl:when test='self::test'>
<a href='{../@uri}{@name}.svg'><xsl:value-of select='@name'/></a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</th>
<xsl:choose>
<xsl:when test="yes"><td class="yes">yes</td></xsl:when>
<xsl:when test="partial"><td class="partial">partial</td></xsl:when>
<xsl:otherwise><td class="no">no</td></xsl:otherwise>
</xsl:choose>
<td class="attribute-note">
<xsl:apply-templates select="*/node()"/>
</td>
</tr>
</xsl:template>
<xsl:template match="prefixes"/>
<xsl:template name="qname">
<xsl:param name="name"/>
<xsl:param name="ns"/>
<xsl:param name="prefixes"/>
<xsl:choose>
<xsl:when test="$ns = ''">
<xsl:value-of select="$name"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="prefix" select="$prefixes/prefix[@ns=$ns][1]/@prefix"/>
<xsl:choose>
<xsl:when test="$prefix = ''">
<xsl:value-of select="concat('{', $ns, '}', $name)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($prefix, ':', $name)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="yes | partial | no">
<span class="{local-name()}"><xsl:apply-templates/></span>
</xsl:template>
</xsl:stylesheet>