Subject: [xsl] recursion with Muenchean Grouping... From: Nikolas.Nehmer@xxxxxxxxxxx (Nikolas Nehmer) Date: Wed, 18 Feb 2004 16:12:50 +0100 |
Hi, I have a source XML file with following general structure: <root> <element>text</element> occurence 0 to unbounded <element href="URL"/> occurence 0 to unbounded <element>***</element> *** means a structure like root; occurence 0 to unbounded </root> I'm trying to develope a generic html visualization for such a XML document. As you can see by the *** recursion is involved. But I don't know how to handle it exactly? I think I need another key which groups the *** root elements? Does anyone have a solution? At the Moment my XSL looks like that: Key defined in other XSL: <xsl:key name="elementtags-by-name" match="*" use="name(.)"/> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:iese.config="http://www.iese.fhg.de/config" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="iese.config"> <xsl:output method="xml" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/> <xsl:template name="default-ul"> <xsl:variable name="unique-elements" select="*[generate-id()=generate-id(key('elementtags-by-name',name()))]" /> <ul> <xsl:for-each select="$unique-elements"> <xsl:variable name="elements-by-name" select="key('elementtags-by-name', name())"/> <xsl:choose> <xsl:when test="@href"> <xsl:apply-templates select="$elements-by-name" mode="association_aggregation_ul"/> </xsl:when> <xsl:when test="child::*"> <li> <xsl:value-of select="name()"/> </li> <ul> <xsl:apply-templates select="current()/*" mode="composition_ul"/> </ul> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="$elements-by-name" mode="attribute_ul"/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </ul> </xsl:template> <xsl:template match="*" mode="attribute_ul"> <li> <xsl:value-of select="current()"/> </li> </xsl:template> <xsl:template match="*" mode="association_aggregation_ul"> <li> <a href="{@href}"> <xsl:value-of select="document(@href)/*/*[1]"/> </a> </li> </xsl:template> <xsl:template match="*" mode="composition_ul"> <li> <xsl:value-of select="current()/*"/> </li> </xsl:template> </xsl:stylesheet> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Newbie XSL Question -- Se, Glenn MacGregor | Thread | Re: [xsl] recursion with Muenchean , David Carlisle |
Re: [xsl] Normalize / Simplify HTML, David Tolpin | Date | Re: [xsl] Newbie XSL Question -- Se, Glenn MacGregor |
Month |