This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

AW: Re: getting all nodes from a certain level in the xml hierarchy


When i try this, I get a  "Cannot convert number to NodeSet" Error...
I use the Oracle XSLProcessor Classes. 


-----Ursprungliche Nachricht-----
Von: owner-xsl-list@lists.mulberrytech.com
[mailto:owner-xsl-list@lists.mulberrytech.com]Im Auftrag von Dimitre
Novatchev
Gesendet: Freitag, 27. September 2002 12:46
An: xsl-list@lists.mulberrytech.com
Betreff: [xsl] Re: getting all nodes from a certain level in the xml
hierarchy


Here's a simple solution using the Muenchian method for grouping:

source xml (provided by you):
----------------------------
<Folder NAME="/">
  <Folder NAME="a"/>
  
  <Folder NAME="b">
    <Folder NAME="ba"/>
    <Folder NAME="bb"/>
  </Folder>
  
  <Folder NAME="z">
    <Folder NAME="za">
      <Folder NAME="very deep folder"/>
    </Folder>
  </Folder>
</Folder>

stylesheet:
----------
<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
 
 <xsl:output method="text"/>
 
  <xsl:key name="kDepth" match="Folder" 
           use="count(ancestor::*)" />
  
  <xsl:template match="/">
    <xsl:for-each select="//Folder
                             [
                              generate-id()
                             =
                              generate-id(key('kDepth',
                                              count(ancestor::*)
                                              )[1]
                                          ) 
                              ]">
    
      <xsl:value-of select="concat('Level ', 
                                   count(ancestor::*),
                                   ': ' 
                                   )"/>
      <xsl:for-each select="key('kDepth',count(ancestor::*))">
        <xsl:value-of select="concat(@NAME, '; ')"/>
      </xsl:for-each>
      
      <xsl:text>&#xA;</xsl:text>
    </xsl:for-each>
  

  </xsl:template>
</xsl:stylesheet>


Result:
------

Level 0: /; 
Level 1: a; b; z; 
Level 2: ba; bb; za; 
Level 3: very deep folder;



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]