<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text" encoding="us-ascii" omit-xml-declaration="yes" indent="no"/> <xsl:variable name="padding" select="string(' ')"/> <xsl:template match="/element"> <xsl:apply-templates select="name"/> <xsl:apply-templates select="details"/> <xsl:apply-templates select="object"/> <xsl:apply-templates select="pad-templates"/> <xsl:apply-templates select="element-flags"/> <xsl:apply-templates select="element-implementation"/> <xsl:apply-templates select="clocking-interaction"/> <xsl:apply-templates select="indexing-capabilities"/> <xsl:apply-templates select="pads"/> <xsl:apply-templates select="element-properties"/> <xsl:apply-templates select="dyn-params"/> <xsl:apply-templates select="element-signals"/> <xsl:apply-templates select="element-actions"/> </xsl:template> <xsl:template match="name"> <xsl:text>Element Name: </xsl:text><xsl:value-of select="."/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="details"> <xsl:text>Factory Details: </xsl:text> <xsl:text> Long Name:	</xsl:text> <xsl:value-of select="long-name"/> <xsl:text> </xsl:text> <xsl:text> Class:	</xsl:text> <xsl:value-of select="class"/> <xsl:text> </xsl:text> <xsl:text> License:	</xsl:text> <xsl:value-of select="license"/> <xsl:text> </xsl:text> <xsl:text> Description:	</xsl:text> <xsl:value-of select="description"/> <xsl:text> </xsl:text> <xsl:text> Version:	</xsl:text> <xsl:value-of select="version"/> <xsl:text> </xsl:text> <xsl:text> Author(s):	</xsl:text> <xsl:value-of select="authors"/> <xsl:text> </xsl:text> <xsl:text> Copyright:	</xsl:text> <xsl:value-of select="copyright"/> <xsl:text> </xsl:text> <xsl:text> </xsl:text> </xsl:template> <xsl:template name="object"> <xsl:param name="i"/> <xsl:param name="j"/> <xsl:if test="count($i/*) > 0"> <xsl:call-template name="object"> <xsl:with-param name="i" select="$i/object"/> <xsl:with-param name="j" select="$j - 1"/> </xsl:call-template> <xsl:value-of select="substring ($padding, 1, $j * 6)"/> <xsl:text> +----</xsl:text> </xsl:if> <xsl:value-of select="$i/@name"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="object"> <xsl:call-template name="object"> <xsl:with-param name="i" select="."/> <xsl:with-param name="j" select="count(.//object[(*)])"/> </xsl:call-template> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="pad-templates"> <xsl:text>Pad Templates </xsl:text> <xsl:apply-templates select="./pad-template"/> </xsl:template> <xsl:template match="pad-template"> <xsl:text> </xsl:text> <xsl:value-of select="direction"/> <xsl:text> template: </xsl:text> <xsl:value-of select="name"/> <xsl:text> </xsl:text> <xsl:text> Availability: </xsl:text> <xsl:value-of select="presence"/> <xsl:text> </xsl:text> <xsl:text> Capabilities: </xsl:text> <xsl:apply-templates select="./capscomp"/> </xsl:template> <xsl:template match="capscomp"> <xsl:apply-templates select="./caps"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="caps"> <xsl:text> '</xsl:text> <xsl:value-of select="name"/> <xsl:text>' </xsl:text> <xsl:text> MIME type: </xsl:text> <xsl:value-of select="type"/> <xsl:text>' </xsl:text> <xsl:apply-templates select="./properties"/> </xsl:template> <xsl:template match="properties"> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="list"> <xsl:text> </xsl:text> <xsl:value-of select="@name"/> <xsl:text>	:List </xsl:text> <xsl:apply-templates select="*" mode="list"/> </xsl:template> <!-- propety entries in list mode --> <xsl:template match="string" mode="list"> <xsl:text> String: '</xsl:text> <xsl:value-of select="@value"/> <xsl:text>' </xsl:text> </xsl:template> <xsl:template match="fourcc" mode="list"> <xsl:text> FourCC: '</xsl:text> <xsl:value-of select="@hexvalue"/> <xsl:text>' </xsl:text> </xsl:template> <xsl:template match="int" mode="list"> <xsl:text> Integer: </xsl:text> <xsl:value-of select="@value"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="range" mode="list"> <xsl:text> Integer range: </xsl:text> <xsl:value-of select="concat(@min, ' - ', @max)"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="float" mode="list"> <xsl:text> Float: </xsl:text> <xsl:value-of select="@value"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="floatrange" mode="list"> <xsl:text> Float range: </xsl:text> <xsl:value-of select="concat(@min, ' - ', @max)"/> <xsl:text> </xsl:text> </xsl:template> <!-- propety entries in normal mode --> <xsl:template match="string"> <xsl:text> </xsl:text> <xsl:value-of select="substring (concat (@name, $padding), 1, 15)"/> <xsl:text> : String: '</xsl:text> <xsl:value-of select="@value"/> <xsl:text>' </xsl:text> </xsl:template> <xsl:template match="fourcc"> <xsl:text> </xsl:text> <xsl:value-of select="substring (concat (@name, $padding), 1, 15)"/> <xsl:text> : FourCC: '</xsl:text> <xsl:value-of select="@hexvalue"/> <xsl:text>' </xsl:text> </xsl:template> <xsl:template match="int"> <xsl:text> </xsl:text> <xsl:value-of select="substring (concat (@name, $padding), 1, 15)"/> <xsl:text> : Integer: </xsl:text> <xsl:value-of select="@value"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="range"> <xsl:text> </xsl:text> <xsl:value-of select="substring (concat (@name, $padding), 1, 15)"/> <xsl:text> : Integer range: </xsl:text> <xsl:value-of select="concat(@min, ' - ', @max)"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="float"> <xsl:text> </xsl:text> <xsl:value-of select="substring (concat (@name, $padding), 1, 15)"/> <xsl:text> : Float: </xsl:text> <xsl:value-of select="@value"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="floatrange"> <xsl:text> </xsl:text> <xsl:value-of select="substring (concat (@name, $padding), 1, 15)"/> <xsl:text> : Float range: </xsl:text> <xsl:value-of select="concat(@min, ' - ', @max)"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="flag"> <xsl:text> </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="element-flags"> <xsl:text>Element Flags: </xsl:text> <xsl:apply-templates select="./flag"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="state-change"> <xsl:text> Has change_state() function: </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="load"> <xsl:text> Has custom restore_thyself() function: </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="save"> <xsl:text> Has custom save_thyself() function: </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="element-implementation"> <xsl:text>Element Implementation: </xsl:text> <xsl:apply-templates select="*"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="requires-clock"> <xsl:text> element requires a clock </xsl:text> </xsl:template> <xsl:template match="provides-clock"> <xsl:text> element provides a clock: </xsl:text> <xsl:value-of select="@name"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="clocking-interaction"> <xsl:text>Clocking Interaction: </xsl:text> <xsl:choose> <xsl:when test="count(*) = 0"> <xsl:text> none </xsl:text> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="*"/> </xsl:otherwise> </xsl:choose> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="indexing-capabilities"> <xsl:text> element can do indexing</xsl:text> </xsl:template> <xsl:template match="dyn-params"> <xsl:text>Dynamic Parameters: </xsl:text> <xsl:choose> <xsl:when test="count(*) = 0"> <xsl:text> none </xsl:text> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="dyn-param"/> </xsl:otherwise> </xsl:choose> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="pads"> <xsl:text>Pads: </xsl:text> <xsl:apply-templates select="pad"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="pad"> <xsl:text> </xsl:text> <xsl:value-of select="direction"/> <xsl:text>: '</xsl:text> <xsl:value-of select="name"/> <xsl:text>' </xsl:text> <xsl:apply-templates select="implementation"/> <xsl:text> Pad Template: '</xsl:text> <xsl:value-of select="template"/> <xsl:text>' </xsl:text> </xsl:template> <xsl:template match="implementation"> <xsl:text> Implementation: </xsl:text> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="chain-based"> <xsl:text> Has chainfunc(): </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="bufferpool-function"> <xsl:text> Has bufferpoolfunc(): </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="format"> <xsl:text> (</xsl:text> <xsl:value-of select="@id"/> <xsl:text>)	</xsl:text> <xsl:value-of select="@nick"/> <xsl:text> (</xsl:text> <xsl:value-of select="."/> <xsl:text>) </xsl:text> </xsl:template> <xsl:template match="formats-function"> <xsl:text> Supports seeking/conversion/query formats: </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> <xsl:apply-templates select="format"/> </xsl:template> <xsl:template match="convert-function"> <xsl:text> Has custom convertfunc(): </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="query-function"> <xsl:text> Has custom queryfunc(): </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="event-function"> <xsl:text> Has custom eventfunc(): </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="event"> <xsl:text> </xsl:text> <xsl:value-of select="@type"/> <xsl:for-each select="flag"> <xsl:text> | </xsl:text> <xsl:value-of select='.'/> </xsl:for-each> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="event-mask-func"> <xsl:text> Provides event masks: </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> <xsl:apply-templates select="event"/> </xsl:template> <xsl:template match="query-type"> <xsl:text> (</xsl:text> <xsl:value-of select="@id"/> <xsl:text>)	</xsl:text> <xsl:value-of select="@nick"/> <xsl:text> (</xsl:text> <xsl:value-of select="."/> <xsl:text>) </xsl:text> </xsl:template> <xsl:template match="query-type-func"> <xsl:text> Provides query types: </xsl:text> <xsl:value-of select="@function"/> <xsl:text> </xsl:text> <xsl:apply-templates select="query-type"/> </xsl:template> <xsl:template match="element-properties"> <xsl:text>Element Arguments: </xsl:text> <xsl:apply-templates select="element-property"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="default"> <xsl:text>. (Default </xsl:text> <xsl:value-of select="."/> <xsl:text>)</xsl:text> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="range" mode="params"> <xsl:value-of select="substring ($padding, 1, 25)"/> <xsl:text>Range : </xsl:text> <xsl:value-of select="concat(@min, ' - ', @max)"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="element-property|dyn-param"> <xsl:text> </xsl:text> <xsl:value-of select="substring (concat(name, $padding), 1, 20)"/> <xsl:text> : </xsl:text> <xsl:value-of select="blurb"/> <xsl:text> </xsl:text> <xsl:value-of select="substring ($padding, 1, 25)"/> <xsl:value-of select="type"/> <xsl:apply-templates select="default"/> <xsl:apply-templates select="range" mode="params"/> </xsl:template> <xsl:template match="params"> <xsl:for-each select="type"> <xsl:text>, </xsl:text> <xsl:value-of select="substring ($padding, 1, 25)"/> <xsl:value-of select="substring ($padding, 1, 20)"/> <xsl:value-of select="."/> <xsl:text> arg</xsl:text> <xsl:value-of select="position()"/> </xsl:for-each> </xsl:template> <xsl:template match="signal"> <xsl:value-of select="substring (concat('"', name, '"', $padding), 1, 25)"/> <xsl:value-of select="return-type"/> <xsl:text> user_function </xsl:text> <xsl:value-of select="concat ('(', object-type, '* object')"/> <xsl:apply-templates select="params"/> </xsl:template> <xsl:template match="element-signals"> <xsl:text>Element Signals: </xsl:text> <xsl:choose> <xsl:when test="count(*) = 0"> <xsl:text> none </xsl:text> </xsl:when> <xsl:otherwise> <xsl:for-each select="signal"> <xsl:apply-templates select="."/> <xsl:text>, </xsl:text> <xsl:value-of select="substring ($padding, 1, 25)"/> <xsl:value-of select="substring ($padding, 1, 20)"/> <xsl:text>gpointer user_data); </xsl:text> </xsl:for-each> </xsl:otherwise> </xsl:choose> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="element-actions"> <xsl:text>Element Actions: </xsl:text> <xsl:choose> <xsl:when test="count(*) = 0"> <xsl:text> none </xsl:text> </xsl:when> <xsl:otherwise> <xsl:for-each select="signal"> <xsl:apply-templates select="."/> <xsl:text>); </xsl:text> </xsl:for-each> </xsl:otherwise> </xsl:choose> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet>