Hi,
I want to use some sort of Muenchean Grouping for a default visualizer
in my application. The default visualisation works fine. Now I want to
define this visualizer as a template to reuse it. How could I achieve
that? In general I would use a <template name="default"> structure and
call it from an including xsl with <call-template... But i need to pass
the nodeset on which the transform should be done to the default
visualizer, maybe with a param. But the key for my muenchen grouping
will be defined before the paramter is passed so the nodeset will not be
passed to the visualizer. To get a better imagination my default vis:
<?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:key name="elementtags-by-name" match="/*/*" use="name(.)"/>
<xsl:variable name="home_directory"
select="document('../XML/config.xml')//iese.config:home_directory"/>
<xsl:template match="/*">
<xsl:variable name="unique-elements"
select="*[generate-id()=generate-id(key('elementtags-by-name',name(.)))]
"/>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8"/>
<link rel="stylesheet" type="text/css"
href="file://{$home_directory}/Application/CSS/stylesheet.css" />
<title>Default Overview</title>
</head>
<body>
<h1>Default Overview</h1>
<table>
<tr>
<xsl:apply-templates
select="$unique-elements" mode="header"/>
</tr>
<tr>
<xsl:for-each
select="$unique-elements">
<xsl:variable
name="elements-by-name" select="key('elementtags-by-name', name(.))"/>
<td>
<xsl:choose>
<xsl:when test="@href">
<xsl:apply-templates select="$elements-by-name[name() = name(.)]"
mode="association_aggregation"/>
</xsl:when>
<xsl:when test="child::*">
<xsl:apply-templates select="$elements-by-name[name() = name(.)]"
mode="composition"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$elements-by-name[name() = name(.)]"
mode="attribute"/>
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:for-each>
</tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="*" mode="header">
<th>
<xsl:choose>
<xsl:when test="contains(name(.),':')">
<xsl:value-of
select="substring-after(name(.),':')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="name(.)"/>
</xsl:otherwise>
</xsl:choose>
</th>
</xsl:template>
<xsl:template match="*" mode="attribute">
<p>
<xsl:value-of select="current()"/>
</p>
</xsl:template>
<xsl:template match="*" mode="association_aggregation">
<p>
<a href="{(_at_)href}">
<xsl:value-of
select="document(@href)/*/*[1]"/>
</a>
</p>
</xsl:template>
<xsl:template match="*" mode="composition">
<p>
<xsl:value-of select="current()/*[1]"/>
</p>
</xsl:template>
</xsl:stylesheet>
Best regards,
Nick
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list