|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Getting equivalence classes on attributes
"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
|
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
|

Cart








