This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Stylesheet listing elements and attributes [Was: a key of attributes]
- To: xsl-list at mulberrytech dot com
- Subject: Stylesheet listing elements and attributes [Was: a key of attributes]
- From: Miloslav Nic <nicmila at idoox dot com>
- Date: Wed, 29 Nov 2000 08:34:14 +0100
- References: <E140oIj-0003nn-00@frontend1.herald.ox.ac.uk>
- Reply-To: xsl-list at mulberrytech dot com
Inspired by your mail:
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
version =
"1.0" >
<xsl:output method="text"/>
<xsl:key name="elements" match="*" use="name()"/>
<xsl:key name="attributes" match="@*"
use="concat(name(parent::*),':::',name())"/>
<xsl:key name="allSameAttributes" match="@*" use="name(parent::*)"/>
<xsl:template match = "*" >
<xsl:if test="generate-id() = generate-id(key('elements',name()))">
<xsl:text>
</xsl:text>
<xsl:value-of select="name()"/>
<xsl:apply-templates select="key('allSameAttributes',name())"/>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@*">
<xsl:if test="position()=1">
<xsl:text> [ </xsl:text>
</xsl:if>
<xsl:if test="generate-id() =
generate-id(key('attributes',concat(name(parent::*),':::',name())))">
<xsl:value-of select="name()"/>
<xsl:text> </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text> ] </xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
Sebastian Rahtz wrote:
>
> I want to set up an XSLT key of attribute occurrences indexed by the
> name of the element they occur in, so I said
>
> <xsl:key name="atts" match="@*" use="name(..)"/>
>
> but when I later say eg
>
> <xsl:for-each select="key('atts','xptr')">
>
> I get no results. Am I misunderstanding something about keys?
> ".." from an attribute seems to return the element name
> if I do it by hand.
>
> If anyone feels strong enough to solve the whole problem, what I am
> writing is a stylesheet to list all the different element names in a
> document, and for each one list all the attributes used, and for each
> attribute list the values used. It sounds easier in theory than it is in
> practice, I am finding. anyone have a canned solution?
>
> sebastian
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
--
******************************************
<firstName> Miloslav </firstName>
<surname> Nic </surname>
<mail> nicmila@idoox.com </mail>
<support> http://www.zvon.org </support>
<zvonMailingList>
http://www.zvon.org/index.php?nav_id=4
</zvonMailingList>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list