Subject: Re: [xsl] Getting equivalence classes on attributes From: Francis Norton <francis@xxxxxxxxxxx> Date: Mon, 18 Jun 2001 07:00:38 +0100 |
"Rafael R. Sevilla" wrote: > > Hello. Is there a way to write an XPath expression that will return each > equivalence class on the value of an attribute, i.e. every collection of > nodes whose value for a certain attribute are the same e.g. > See http://www.jenitennison.com/xslt/grouping/muenchian.html for the general method of grouping elements by some XPath key expression. You would want to group attributes with something like: <xsl:key name="attributes-by-name-and-value" match="@*" use="concat(name(), '=', ." /> with, instead of a xsl:value-of, something like: <xsl:copy-of select=".." /> In other words, <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes"/> <xsl:key name="all-attributes" match="@*" use="concat(name(), '=', .)"/> <xsl:template match="/"> <groups> <xsl:for-each select="//@*[generate-id() = generate-id(key('all-attributes', concat(name(), '=', .))[1]) ]"> <xsl:sort select="name()"/> <group attribute="{name()}" value="{.}> <xsl:for-each select="key('all-attributes', concat(name(), '=', .))"> <xsl:copy-of select=".."/> </xsl:for-each> </group> </xsl:for-each> </groups> </xsl:template> </xsl:stylesheet> This works with both saxon and msxsl. Francis. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Getting equivalence classes o, Rafael R. Sevilla | Thread | RE: [xsl] Getting equivalence class, Michael Kay |
[xsl] Getting equivalence classes o, Rafael R. Sevilla | Date | [xsl] find the maximum node count a, Jayaranga Subasinghe |
Month |