[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: Re: [xslt transform & grouping] Using the Muenchia
Subject: Re: Re: [xslt transform & grouping] Using the Muenchian Method?
From: "Michael PG" <xrow@xxxxxxx>
Date: Thu, 07 Oct 2004 13:53:11 +0000
|
Thank you.
It works as I want it to do.
In the other cases, I am using not only one keyword to filter but two.
Now, How can I filter on two keywords instead of one, that is
Get Each Article Element ="food" AND "drink"
I am keeping the old structure of grouping my Muenchain mehtod, just
adding one more filter keyword.
Also, I number of filter increase to 2, 3 and more, what should I think of?
Is it possible to
build some kind of filter array?
Thank you,
Mike
From: David Carlisle <davidc@xxxxxxxxx>
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: Re: [xslt transform & grouping] Using the Muenchian
Method?
Date: Thu, 7 Oct 2004 13:13:10 +0100
You get
$ saxon filter.xml filter.xsl
<?xml version="1.0" encoding="UTF-8"?>
<Documents>
<Document name="sub">
<Article title="1.1" info="sub" filter="food"/>
</Document>
<Document name="main">
<Article title="1.2" info="main" filter="food"/>
<Article title="2.2" info="main" filter="food"/>
</Document>
<Document name="child"/>
</Documents>
because of the different ways you filter.
on document you allow "" but in
<xsl:copy-of select="key('by-info',@info)[@filter=$filter]"/>
you don't.
I think that _is_ what you want, so in your for-each,
<xsl:for-each select="Document[@filter='' or
@filter=$filter]/Article[generate-id()=generate-id(key('by-info',@info)[@filter=''
or @filter=$filter])]">
you want to make sure that you always have at least one eleemnt in the
key that really has the filter value and not just "" so that
<xsl:copy-of select="key('by-info',@info)[@filter=$filter]"/>
always produces something.
you can do that by making the filters on the key() match,
delete @filter='' or
<xsl:for-each select="Document[@filter='' or
@filter=$filter]/Article[generate-id()=generate-id(key('by-info',@info)[@filter=$filter])]">
and you get
$ saxon filter.xml filter.xsl
<?xml version="1.0" encoding="UTF-8"?>
<Documents>
<Document name="sub">
<Article title="1.1" info="sub" filter="food"/>
</Document>
<Document name="main">
<Article title="1.2" info="main" filter="food"/>
<Article title="2.2" info="main" filter="food"/>
</Document>
</Documents>
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
_________________________________________________________________
Check out Election 2004 for up-to-date election news, plus voter tools and
more! http://special.msn.com/msn/election2004.armx
|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
RSS 2.0 |
|
Atom 0.3 |
|
|