> I try to create an index page from a document. The idea behind is to[color=blue]
> collect a certain word and list it with *all* occurences in the
> document, like
>
> foo .... 12, 23, 45
> bar .... 2, 5, 88
>
> and so on. I have a XML document which contains entries with different
> classes (Java classes).
> I have a XSL stylesheet which collects all entries in a sorted order.
> But there is one separate entry for each occurence:
>
> foo ... 12
> foo ... 23
> foo ... 45
> bar ... 2[/color]
Hi,
I'm not sure if this will solve the problem, but you might look at this:
Given this xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<occ name="foo" line="23"/>
<occ name="foo" line="12"/>
<occ name="bar" line="5"/>
<occ name="bar" line="88"/>
<occ name="foo" line="45"/>
<occ name="bar" line="2"/>
</root>
#########################
,this stylsheet:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:key name="index-key" match="occ" use="@name"/>
<xsl:template match="/">
<xsl:for-each select="//occ[generate-id(.)=generate-id(key('index-key',@name))]/@name">
<xsl:sort select="." case-order="lower-first"/>
<xsl:value-of select="."/>:
<xsl:apply-templates select="//occ[@name=current()]">
<xsl:sort select="@line" case-order="lower-first"/>
</xsl:apply-templates>
</xsl:for-each>
</xsl:template>
<xsl:template match="occ">
<xsl:value-of select="@line"/>,
</xsl:template>
</xsl:stylesheet>
########################
,will output:
bar: 2, 5, 88, foo: 12, 23, 45,
########################
Is this of any use?
--
Joris Gillis (
http://www.ticalc.org/cgi-bin/acct-v...i?userid=38041)
Ceterum censeo XML omnibus esse utendum