AW: [xsl] recursion with Muenchean Grouping...

Subject: AW: [xsl] recursion with Muenchean Grouping...
From: Nikolas.Nehmer@xxxxxxxxxxx (Nikolas Nehmer)
Date: Wed, 18 Feb 2004 18:02:46 +0100
Would it be possible to create a href which points to a part, in
particular, to the nested root element and display it with the same
transformation? So only display the elements on the first level and to
have hrefs to the deeper lying elements? 

|-----Ursprüngliche Nachricht-----
|Von: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-
|list@xxxxxxxxxxxxxxxxxxxxxx] Im Auftrag von Nikolas Nehmer
|Gesendet: Mittwoch, 18. Februar 2004 16:13
|An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
|Betreff: [xsl] recursion with Muenchean Grouping...
|
|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


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread