xsl-list
[Top] [All Lists]

Sorting resulttree to multiple levels

2003-05-15 02:34:31
Hi there!

We have managed to get some xml data from a broken software. I am puzzled with
a prob. I am having the simplified xml source as:

<knowledge-object id="id39">
        <metadata>
                <title>MitÀ nyt pitÀisi tehdÀ</title>
        <creator>Sari</creator>
<extra-meta>                                            
<creation-date>2003/01/30</creation-date>
<meta base="FLE3" description="metatype">                               
<unstructured-source>Note</unstructured-source>
</meta>
<meta base="FLE3" description="parent">                                 
<unstructured-source>38</unstructured-source>
</meta>
<meta base="FLE3" description="type">                           
<unstructured-source>konteksti</unstructured-source>
</meta>
</extra-meta>
</metadata>
                                
</knowledge-object>
<knowledge-object id="id40">
<metadata>
<title>Arvopohjan yleiset osa-alueet</title>
<creator>JukkaS</creator>
<extra-meta>
                                                
<creation-date>2003/01/30</creation-date>
<meta base="FLE3" description="metatype">                               
<unstructured-source>Note</unstructured-source>
</meta>
<meta base="FLE3" description="parent">                                 
<unstructured-source>39</unstructured-source>
</meta>
<meta base="FLE3" description="type">                                   
<unstructured-source>haaste</unstructured-source>
</meta>
</extra-meta>
</metadata>                             
</knowledge-object>

<knowledge-object id="id42">
<metadata>
<title>Hahtuvan sijainti</title>
<creator>Sari</creator>
<extra-meta>
                                                
<creation-date>2003/01/30</creation-date>
<meta base="FLE3" description="metatype">                               
<unstructured-source>Note</unstructured-source>
</meta>
<meta base="FLE3" description="parent">                                 
<unstructured-source>40</unstructured-source>
</meta>
<meta base="FLE3" description="type">                                   
<unstructured-source>info</unstructured-source>
</meta>
</extra-meta>
</metadata>
</knowledge-object>
                        
<knowledge-object id="id43">
<metadata>
<title>Luonnosta ja jatkuvuudesta</title>
<creator>Eerikki</creator>
<extra-meta>
                                                
<creation-date>2003/01/31</creation-date>
<meta base="FLE3" description="metatype">                               
<unstructured-source>Note</unstructured-source>
</meta>
<meta base="FLE3" description="parent">                                 
<unstructured-source>42</unstructured-source>
</meta>
<meta base="FLE3" description="type">                                   
<unstructured-source>haaste</unstructured-source>
</meta>
</extra-meta>
</metadata>
</knowledge-object>
                        
<knowledge-object id="id44">
<metadata>
<title>YrittÀjyys arvopohjan paikalliseksi teemaksi?</title>
<creator>JukkaS</creator>
<extra-meta>
                                                
<creation-date>2003/02/01</creation-date>
<meta base="FLE3" description="metatype">                               
<unstructured-source>Note</unstructured-source>
</meta>
<meta base="FLE3" description="parent">                                 
<unstructured-source>43</unstructured-source>
</meta>
<meta base="FLE3" description="type">                                   
<unstructured-source>idea</unstructured-source>
</meta>
</extra-meta>
</metadata>
</knowledge-object>
                        
<knowledge-object id="id47">
<metadata>
<title>YrittÀjyys kunniaan!</title>
<creator>Anna</creator>
<extra-meta>                                    
<creation-date>2003/02/03</creation-date>
<meta base="FLE3" description="metatype">                               
<unstructured-source>Note</unstructured-source>
</meta>
<meta base="FLE3" description="parent">                         
<unstructured-source>42</unstructured-source>
</meta>
<meta base="FLE3" description="type">                                   
<unstructured-source>arvio</unstructured-source>
</meta>
</extra-meta>
</metadata>
</knowledge-object>
                        
<knowledge-object id="id50">
<metadata>
<title>yrittÀjyys ja arvopohja</title>
<creator>Pieta</creator>
<extra-meta>
                                                
<creation-date>2003/02/03</creation-date>
<meta base="FLE3" description="metatype">                               
<unstructured-source>Note</unstructured-source>
</meta>
<meta base="FLE3" description="parent">                                 
<unstructured-source>44</unstructured-source>
</meta>
<meta base="FLE3" description="type">                                   
<unstructured-source>arvio</unstructured-source>
</meta>
</extra-meta>
</metadata>
</knowledge-object>
</root>

What I need is to sort the resulttree. This seems to be somekind of grouping
problem. The structure of xml is supposed to describe a discussion tree.
Should I try some key solution or what?

So the result is supposed to be something like:

id41 (from element <knowledge-object id="41"> )
  47 (<unstructured-source>47</unstructured-source>
  48
   49
    50
   51
  52

id42
  23
   24
    25
   26
  27

Sorry about this messy question. 

I have managed to sort the resulttree for one level by using this template:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:template match="/">
        <html>

        <body>
        <xsl:for-each select="//environment">
        <xsl:for-each select="//knowledge-object">
        <xsl:param name="parentID" select="substring-after(@id,'d')"/>

        
         <xsl:for-each
select="following-sibling::*[metadata/extra-meta/meta[2]/unstructured-source=$parentID]">

         <h1><xsl:value-of select="metadata/title"/> :object-id:<xsl:value-of
select="@id"/>: source: 
                               <xsl:value-of
select="metadata/extra-meta/meta[2]/unstructured-source"/></h1>
         <p><xsl:value-of select="source/p"/></p> 
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each> 
                
                
        </body>
        </html>
</xsl:template>
</xsl:stylesheet>


Cheers, 
Jarkko

***************************************************
* Jarkko Moilanen                                 *
* Project Researcher, ITCM (www.itcm.org)         *
* Profound XML technology Expert                  *
* University of Tampere                           *
* Hypermedia Laboratory                           *
***************************************************

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



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