variables - Loop on all var in xslt -
i have issue xslt syntax, stylesheet :
<?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:saxon="http://saxon.sf.net/"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <root> <xsl:for-each select="for $x in(collection('file:///users/admin/documents/xmlsoapui/?select=*.xml;recurse=yes'))return saxon:discard-document($x)//testsuite"> <ident> <xsl:value-of select="base-uri()"/> <xsl:if test="matches(base-uri(),'catalog')"> <xsl:call-template name="summarycatalog"/> </xsl:if> <xsl:if test="matches(base-uri(),'status')"> <xsl:call-template name="summarystatus"/> </xsl:if> <xsl:if test="matches(base-uri(),'alarm')"> <xsl:call-template name="summaryalarm"/> </xsl:if> </ident> </xsl:for-each> </root> </xsl:template> <xsl:template name="summarycatalog"> <xsl:variable name="avgaddfile" select="avg(testcase[@name='addfile']/@time)"/> <xsl:variable name="avggetfile" select="avg(testcase[@name='getfile']/@time)"/> <xsl:variable name="avgremovefile" select="avg(testcase[@name='removefile']/@time)"/> <xsl:variable name="avgaddgroup" select="avg(testcase[@name='addgroup']/@time)"/> <xsl:variable name="avggetgroup" select="avg(testcase[@name='getgroup']/@time)"/> <xsl:variable name="avgremovegroup" select="avg(testcase[@name='removegroup']/@time)"/> <xsl:variable name="avgaddmedia" select="avg(testcase[@name='addmedia']/@time)"/> <xsl:variable name="avggetmedia" select="avg(testcase[@name='getmedia']/@time)"/> <xsl:variable name="avgremovemedia" select="avg(testcase[@name='removemedia']/@time)"/> <xsl:variable name="avgaddmediacomponent" select="avg(testcase[@name='addmediacomponent']/@time)"/> <xsl:variable name="avggetmediacomponent" select="avg(testcase[@name='getmediacomponent']/@time)"/> <xsl:variable name="avgremovemediacomponent" select="avg(testcase[@name='removemediacomponent']/@time)"/> <xsl:variable name="avgaddopus" select="avg(testcase[@name='addopus']/@time)"/> <xsl:variable name="avggetopus" select="avg(testcase[@name='getopus']/@time)"/> <xsl:variable name="avgremoveopus" select="avg(testcase[@name='removeopus']/@time)"/> <xsl:variable name="avgaddtrack" select="avg(testcase[@name='addtrack']/@time)"/> <xsl:variable name="avggettrack" select="avg(testcase[@name='gettrack']/@time)"/> <xsl:variable name="avgremovetrack" select="avg(testcase[@name='removetrack']/@time)"/> <testchargecatalog> <avgaddfile><xsl:value-of select="format-number($avgaddfile,'0.00000')"/></avgaddfile> <avggetfile><xsl:value-of select="format-number($avggetfile,'0.00000')"/></avggetfile> <avgremovefile><xsl:value-of select="format-number($avgremovefile,'0.00000')"/> </avgremovefile> <avgaddgroup><xsl:value-of select="format-number($avgaddgroup,'0.00000')"/></avgaddgroup> <avggetgroup><xsl:value-of select="format-number($avgaddgroup,'0.00000')"/></avggetgroup> <avgremovegroup><xsl:value-of select="format-number($avgaddgroup,'0.00000')"/></avgremovegroup> <avgaddmedia><xsl:value-of select="format-number($avgaddmedia,'0.00000')"/></avgaddmedia> <avggetmedia><xsl:value-of select="format-number($avgaddmedia,'0.00000')"/></avggetmedia> <avgremovemedia><xsl:value-of select="format-number($avgaddmedia,'0.00000')"/></avgremovemedia> <avgaddmediacomponent><xsl:value-of select="format-number($avgaddmediacomponent,'0.00000')"/></avgaddmediacomponent> <avggetmediacomponent><xsl:value-of select="format-number($avggetmediacomponent,'0.00000')"/></avggetmediacomponent> <avgremovemediacomponent><xsl:value-of select="format-number($avgremovemediacomponent,'0.00000')"/></avgremovemediacomponent> <avgaddopus><xsl:value-of select="format-number($avgaddopus,'0.00000')"/></avgaddopus> <avggetopus><xsl:value-of select="format-number($avggetopus,'0.00000')"/></avggetopus> <avgremoveopus><xsl:value-of select="format-number($avgremoveopus,'0.00000')"/></avgremoveopus> <avgaddtrack><xsl:value-of select="format-number($avgaddtrack,'0.00000')"/></avgaddtrack> <avggettrack><xsl:value-of select="format-number($avggettrack,'0.00000')"/></avggettrack> <avgremovetrack><xsl:value-of select="format-number($avgremovetrack,'0.00000')"/></avgremovetrack> </testchargecatalog> </xsl:template> <xsl:template name="summarystatus"> <xsl:variable name="avgaddstatus" select="avg(testcase[@name='addstatus']/@time)"/> <xsl:variable name="avggetstatus" select="avg(testcase[@name='getstatus']/@time)"/> <testchargestatus> <avgaddstatus><xsl:value-of select="format-number($avgaddstatus,'0.00000')"/></avgaddstatus> <avggetstatus><xsl:value-of select="format-number($avggetstatus,'0.00000')"/></avggetstatus> </testchargestatus> </xsl:template> <xsl:template name="summaryalarm"> <xsl:variable name="avgaddalarm" select="avg(testcase[@name='addalarm']/@time)"/> <xsl:variable name="avggetalarm" select="avg(testcase[@name='getalarm']/@time)"/> <testchargealarm> <avgaddalarm><xsl:value-of select="format-number($avgaddalarm,'0.00000')"/></avgaddalarm> <avggetalarm><xsl:value-of select="format-number($avggetalarm,'0.00000')"/></avggetalarm> </testchargealarm> </xsl:template>
what want create template <xsl:for-each select="allvariables">
, apply transform value of variables.
i dont know if possible, because haven't seen exemple online.
thanks helping
it's not clear me, why can't do:
<testchargecatalog> <xsl:for-each-group select="testcase" group-by="@name"> <xsl:element name="avg{upper-case( substring( current-grouping-key(), 1, 1 ) ) }{substring(current-grouping-key(),2)}"> <xsl:value-of select="format-number( avg(current-group()/@time), '0.00000' )"/> </xsl:element> <xsl:for-each-group> </testchargecatalog>
Comments
Post a Comment