[xsl] XPath problem

Subject: [xsl] XPath problem
From: "Jonny Pony" <jonnypony666@xxxxxxxxxxx>
Date: Wed, 28 Apr 2004 09:22:18 +0000
Hi,

I still have a small problem with my modified "Pretty XML Tree Viewer (by Mike J. Brown and Jeni Tennison)

I stripped down the tree-view.xsl to a minimum.

My problem:

I get this as an output:

 tree
  |
  |___DB
      |
      |___Nina
            |
            |___Servus
            |     |
            |     |___Chip
            |
            |___Hallo
                  |
                  |___Warum
                  |     |
                  |     |___Serve
                  |
                  |___PC


But I want the tree starting from an other node; e.g. the node <nina>.


     tree
      |___Nina
            |
            |___Servus
            |     |
            |     |___Chip
            |
            |___Hallo
                  |
                  |___Warum
                  |     |
                  |     |___Serve
                  |
                  |___PC



tree-view.xml

<?xml version="1.0" encoding="utf-8"?>
<DB>
   <Nina>
       <Servus>
           <Chip/>
       </Servus>
       <Hallo>
           <Warum>
               <Serve/>
           </Warum>
           <PC/>
       </Hallo>
   </Nina>
</DB>


My stripped down 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:template match="/">
<html>
<head>
<title>tree-view by Mike J. Brown and Jeni Tennison</title>
</head>
<body>
<h3>Can't find the solution for my problem</h3>
<xsl:apply-templates select="." mode="render"/>
</body>
</html>
</xsl:template>
<xsl:template match="/" mode="render">
tree
<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"/>___&#160;<xsl:value-of select="local-name()"/>
<br/>
<xsl:apply-templates mode="render"/>
</xsl:template>
<xsl:template name="ascii-art-hierarchy">
<xsl:for-each select="ancestor::*">
<xsl:choose>
<xsl:when test="following-sibling::node()">&#160;&#160;|&#160;&#160;&#160;</xsl:when>
<xsl:otherwise>&#160;&#160;&#160;&#160;&#160;&#160;</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:choose>
<xsl:when test="parent::node() and ../child::node()">&#160;&#160;|</xsl:when>
<xsl:otherwise>&#160;&#160;&#160;</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>



I couldn' solve the problem myself.


Anyone got an idea?

Thanks
Jonny

_________________________________________________________________
MSN Messenger - sehen, welche Freunde online sind! http://www.msn.de/messenger Jetzt kostenlos downloaden und mitmachen!


Current Thread