|
Subject: Re: [xsl] bizzare number problem From: tom.kirkpatrick@xxxxxxxxxxxx Date: Wed, 26 Jan 2005 14:08:19 +0000 |
there is curly braces around the xpath bit of the attribute value:
{translate(document('/malwareDirectory/fami
lies/index.xml')/malwareVariantFamilies/malwareFamily[@id
= $id]/variant[position() = 1]/@id, '/', '-')}
In plain english. This looks up
/malwareVariantFamilies/malwareFamily[@id = $id]/variant[position() =
1]/@id
in the document '/malwareDirectory/families/index.xml'
the value of /malwareVariantFamilies/malwareFamily[@id =
$id]/variant[position() = 1]/@id
will result in something lik 'W32/Netsky.a' - The corrisponding filename
will be 'W32-Netsky.a'
So the translate() changes '/' to '-' in the id attribute of
/malwareVariantFamilies/malwareFamily[@id = $id]/variant[position() = 1]
in the document '/malwareDirectory/families/index.xml'
"Vasu Chakkera" <vasucv@xxxxxxxxxxx>
26/01/2005 13:55
Please respond to xsl-list
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
cc:
Subject: Re: [xsl] bizzare number problem
<a
href="/malwareDirectory/variants/{translate(document('/malwareDirectory/fami
lies/index.xml')/malwareVariantFamilies/malwareFamily[@id
= $id]/variant[position() = 1]/@id, '/', '-')}.xml">
The above statement is a bit confusing. Could you please translate this
for
us in plain english ??
One other thing there should be curly braces around any xpath statement
or
function , when it is used as a value of an attribute ( attribute value
template )
Refer : http://www.dpawson.co.uk/xsl/sect2/N1575.html
Cheers
Vasu
----- Original Message -----
From: <tom.kirkpatrick@xxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Wednesday, January 26, 2005 1:09 PM
Subject: Re: [xsl] bizzare number problem
> Ok. The complete template is:
>
> <xsl:template name="displayPrevalence">
> <xsl:param name="year"/>
> <xsl:param name="month" select="'NA'"/>
> <xsl:param name="items" select="100"/>
> <xsl:param name="method" select="'normal'"/>
> <!-- start the table -->
> <rawhtml>
> <table class="layout vcard">
> <tr class="greybox">
> <th class="leftContent" style="width:100px !important;">
> Virus Name
> </th>
> <th>
> Prevalence
> </th>
> <th class="leftContent" style="width:60px !important;">
> Percentage
> </th>
> <xsl:if test="$method != 'lite'">
> <th class="leftContent" style="width:60px !important;">
> Instances
> </th>
> </xsl:if>
> </tr>
> <!-- ensure month has a leading 0 (if set) -->
> <xsl:variable name="prevMonth" select="format-number($month,
> '00')"/>
> <!-- do the rows for a specific month-->
> <xsl:for-each
>
select="document('/malwareDirectory/prevalence/index.xml')/malwarePrevalence
/malwareFamily/entry[@date
> = concat($year,$prevMonth)]">
> <xsl:sort order="descending" select="@instances"
> data-type="number"/>
> <xsl:if test="position() <= $items">
> <xsl:variable name="id" select="../@id"/>
> <tr>
> <th class="leftContent">
> <xsl:choose>
> <xsl:when
>
test="document('/malwareDirectory/families/index.xml')/malwareVariantFamilie
s/malwareFamily[@id
> = $id]/variant">
> <a
>
href="/malwareDirectory/variants/{translate(document('/malwareDirectory/fami
lies/index.xml')/malwareVariantFamilies/malwareFamily[@id
> = $id]/variant[position() = 1]/@id, '/', '-')}.xml">
> <xsl:value-of select="$id"/>
> </a>
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of select="$id"/>
> </xsl:otherwise>
> </xsl:choose>
> </th>
> <td>
> <xsl:variable name="currentNumber"
> select="ceiling(@percentage) * 0.95"/>
> <img src="/images/bgraph.gif" height="15"
> align="center" style="border:0px; padding:0px; margin:0px;"/>
> <img src="/images/ggraph.gif" height="15"
> align="center" style="border:0px; padding:0px; margin:0px;"
> width="{$currentNumber}"/>
> <img src="/images/bgraph.gif" height="15"
> align="center" style="border:0px; padding:0px; margin:0px;"/>
> <xsl:value-of select="$currentNumber"/> -
> <xsl:value-of select="ceiling(@percentage * 0.95)"/>
> </td>
> <td><xsl:value-of select="@percentage"/></td>
> <xsl:if test="$method != 'lite'">
> <td><xsl:value-of select="@instances"/></td>
> </xsl:if>
> </tr>
> </xsl:if>
> </xsl:for-each>
> </table>
> </rawhtml>
> </xsl:template>
>
>
>
> I call it with a call like this:
>
> <xsl:call-template name="displayPrevalence">
> <xsl:with-param name="year" select="'2004"/>
> <xsl:with-param name="month" select="'11'"/>
> <xsl:with-param name="items" select="5"/>
> <xsl:with-param name="method" select="'lite'"/>
> </xsl:call-template>
>
>
>
> I am processing with Apache::AxKit
>
> I have narrowed the problem down to the choose element:
>
> <xsl:choose>
> <xsl:when
>
test="document('/malwareDirectory/families/index.xml')/malwareVariantFamilie
s/malwareFamily[@id
> = $id]/variant">
> <a
>
href="/malwareDirectory/variants/{translate(document('/malwareDirectory/fami
lies/index.xml')/malwareVariantFamilies/malwareFamily[@id
> = $id]/variant[position() = 1]/@id, '/', '-')}.xml">
> <xsl:value-of select="$id"/>
> </a>
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of select="$id"/>
> </xsl:otherwise>
> </xsl:choose>
>
> If I remove that it works fine. If I keep that, $currentNumber comes out
> as '-2.0465678427e23 +10'!
>
> --
> Tom David Kirkpatrick
> Virus Bulletin Web Developer, Virus Bulletin
>
> Tel: +44 1235 555139
> Web: www.virusbtn.com
--
Tom David Kirkpatrick
Virus Bulletin Web Developer, Virus Bulletin
Tel: +44 1235 555139
Web: www.virusbtn.com
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] bizzare number problem, tom . kirkpatrick | Thread | Re: [xsl] bizzare number problem, Vasu Chakkera |
| Re: [xsl] bizzare number problem, Vasu Chakkera | Date | Re: [xsl] bizzare number problem, David Carlisle |
| Month |