Hi,
I modified (more precise: stripped down) the "Pretty XML Tree Viewer 1.0"
from Mike J. Brown and Jeni Tennison for my needs.
Now I have two questions:
1. Here my modified tree-view.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no"/>
<xsl:variable name="apos">'</xsl:variable>
<xsl:template match="/">
<html>
<head>
<title>Supertable</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 80%; background-color:
#EAEAD9; color: black }
.connector { font-family: monospace; }
.name { color: navy; background-color: white; text-decoration:
underline; font-weight: bold; padding-top: 0px; padding-bottom: 1px;
padding-left: 3px; padding-right: 3px }
.altname { color: navy; text-decoration: underline }
.uri { color: #444; font-style: italic }
.value { color: #040; background-color: #CCC; font-weight: bold }
.escape { color: #620; font-family: monospace }
.root { color: yellow; background-color: black }
.element { color: yellow; background-color: navy }
.namespace { color: yellow; background-color: #333 }
.attribute { color: yellow; background-color: #040 }
.text { color: yellow; background-color: #400 }
.pi { color: yellow; background-color: #044 }
.comment { color: yellow; background-color: #303 }
.root,.element,.attribute,.namespace,.text,.comment,.pi
{ font-weight: bold; padding-top: 0px; padding-bottom: 1px;
padding-left: 3px; padding-right: 3px }
</style>
</head>
<body>
<h3>tree-view.xsl output</h3>
<xsl:apply-templates select="." mode="render"/>
</body>
</html>
</xsl:template>
<xsl:template match="/" mode="render">
<span class="root">root</span>
<br/>
<xsl:apply-templates mode="render"/>
</xsl:template>
<xsl:template match="*" mode="render">
<xsl:call-template name="ascii-art-hierarchy"/>
<br/>
<xsl:call-template name="ascii-art-hierarchy"/>
<span class="connector">___</span>
<span class="element">Tabelle</span>
<xsl:text> </xsl:text>
<span class="name">
<xsl:value-of select="local-name()"/>
</span>
<br/>
<xsl:apply-templates select="@*" mode="render"/>
<xsl:apply-templates mode="render"/>
</xsl:template>
<xsl:template match="@*" mode="render">
<xsl:call-template name="ascii-art-hierarchy"/>
<span class="connector">  </span>
<span class="connector">\___</span>
<span class="attribute">attribute</span>
<xsl:text> </xsl:text>
<span class="name">
<xsl:value-of select="local-name()"/>
</span>
<xsl:text> = </xsl:text>
<span class="value">
<!-- make spaces be non-breaking spaces, since this is HTML -->
<xsl:call-template name="escape-ws">
<xsl:with-param name="text" select="translate(.,' ',' ')"/>
</xsl:call-template>
</span>
<br/>
</xsl:template>
<xsl:template match="processing-instruction()" mode="render">
<xsl:call-template name="ascii-art-hierarchy"/>
<br/>
<xsl:call-template name="ascii-art-hierarchy"/>
<span class="connector">___</span>
<span class="pi">processing instruction</span>
<xsl:text> </xsl:text>
<xsl:text>target=</xsl:text>
<span class="value">
<xsl:value-of select="name()"/>
</span>
<xsl:text> instruction=</xsl:text>
<span class="value">
<xsl:value-of select="."/>
</span>
<br/>
</xsl:template>
<xsl:template name="ascii-art-hierarchy">
<xsl:for-each select="ancestor::*">
<xsl:choose>
<xsl:when test="following-sibling::node()">
<span class="connector">  </span>|<span
class="connector">  </span>
<xsl:text> </xsl:text>
</xsl:when>
<xsl:otherwise>
<span class="connector">    </span>
<span class="connector">  </span>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:choose>
<xsl:when test="parent::node() and ../child::node()">
<span class="connector">  </span>
<xsl:text>|</xsl:text>
</xsl:when>
<xsl:otherwise>
<span class="connector">   </span>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="escape-ws">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, '
')">
<xsl:call-template name="escape-ws">
<xsl:with-param name="text" select="substring-before($text, '
')"/>
</xsl:call-template>
<!-- <span class="escape">\n</span> -->
<xsl:call-template name="escape-ws">
<xsl:with-param name="text" select="substring-after($text, '
')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($text, '	')">
<xsl:value-of select="substring-before($text, '	')"/>
<!-- <span class="escape">\t</span> -->
<xsl:call-template name="escape-ws">
<xsl:with-param name="text" select="substring-after($text, '	')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
My problem is, that the "|" in the output are present, even if the nodes got
no following-nodes.
I tried out some logic to avoid this, but I couldn't solve the problem.
E.g. I'll get this html-output:
|___Tabelle hallo
| |
| |___Tabelle Se
| | |
| | |___Tabelle Serve
| |
| |___Tabelle Yo
But I want to get this html-output:
|___Tabelle hallo
|
|___Tabelle Se
| |
| |___Tabelle Serve
|
|___Tabelle Yo
2. Is there a newer version of this great ""Pretty XML Tree Viewer"?
Thanks
Jonny
_________________________________________________________________
E-Mails sind Ihnen nicht schnell genug? http://www.msn.de/messenger MSN
Messenger - Kommunikation in Echtzeit