[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Wildcard problem


Subject: Re: [xsl] Wildcard problem
From: Andrew Franz <afranz0@xxxxxxxxxxxxxxxx>
Date: Thu, 06 Oct 2005 23:37:53 +1000

FWIW, a 1.0 solution without Muenchian grouping:

<xsl:template ...>
...
<xsl:variable name="keep"><xsl:apply-templates><xsl:sort select="name()" /></xsl:apply-templates></xsl:variable>
count: <xsl:value-of select="string-length(normalize-space($keep))" />
</xsl:template>


<xsl:template match="*[name()=name(preceding-sibling::*[1])]" />
<xsl:template match="*[not(starts-with(name(), 'WAAUX'))]" />
<xsl:template match="*[not(translate(substring(name(),6,2), '0123456789','') = '')]" />
<xsl:template match="*">0</xsl:template>



Khorasani, Houman wrote:


HI David,

muenchian grouping; I have to read and learn more about it.  However I
can imagine what the index is supposed to do; to prevent the counting of
doubles in my case.

I don't get an error with your code. However I get a count of 10 when I
should have gotten 2.

<WAAUX03MeterPulse action="add">
<WAAUX03WithholdNumber action="add">
<WAAUX01MeterPulse action="add">
<WAAUX01Bar141 action="add">
<WAAUX01CallBarring action="add">
<WAAUX01Line action="add">
<WAAUX03ICB action="add">
<WAAUX01OCBE action="add">
<WAAUX03OCB action="add">
<WAAUX03Line action="add">

It still counts everything with WAAUX following two digits, which are
10.

As I said, I am very new to muenchian grouping. However could it be that
this is wrong:

<xsl:key name="WAAUX" match="*[starts-with(name(),'WAAUX')]"
use="name()"/>

Because not each element that starts with WAAUX needs a unique index.
But each element that starts with WAAUX AND a two number digits needs a
unique index, right?  But how is this possible? The Translate won't help
in this situation. Unless the problem is somewhere else...

Many thanks
Houman




-----Original Message-----
From: David Carlisle [mailto:davidc@xxxxxxxxx] Sent: 06 October 2005 10:38
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Wildcard problem





However the translate() funcation eliminates this differences.
Is that possible or too complicated for XSLT?



You just need to do the de-duplication before the translate. eg using keys (muenchian grouping)

<xsl:key name="WAAUX" match="*[starts-with(name(),'WAAUX')]"
use="name()"/>


<xsl:value-of select="count(* [generate-id()=generate-id(key('WAAUX',name())[1])] [starts-with(translate(name(),'123456789','000000000'),'WAAUX00')])"/>


Current Thread