xsl-list
[Top] [All Lists]

Muenchean grouping as template...

2004-02-16 09:19:00
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



<Prev in Thread] Current Thread [Next in Thread>