xsl-list
[Top] [All Lists]

RE: [xsl] Transforming a non-hierarchical XML into a hierarchical one

2007-03-08 05:42:56

If the sections aren't recursive (different element name used at each level)
then you can do something like

<xsl:for-each-group select="*" 
                    group-starting-with="section">
  <section>
    <h1>...</h1>
    <xsl:for-each-group select="current-group()[position() ne 1]" 
                        group-starting-with="sub-section">
       <h2>...</h2>
          <xsl:for-each-group select="current-group()[position() ne 1]" 
                              group-starting-with="sub-sub-section">
           <h3>...</h3>

Michael Kay
http://www.saxonica.com/
       

-----Original Message-----
From: SEXpeare [mailto:sexpeare(_at_)gmail(_dot_)com] 
Sent: 08 March 2007 11:23
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Transforming a non-hierarchical XML into a 
hierarchical one

a 2.0 solution would be great, thx for your time, i have been 
working with xsl-fo for a time, but never had to do 
complicated transformations like this one, i want to learn 
all i can from you ;)

2007/3/8, Michael Kay <mike(_at_)saxonica(_dot_)com>:

I'm guessing from your choice of element names that your hierarchic 
structure is positional rather than defined by pointers.

This makes it a positional grouping problem. Such problems 
are always 
much easier in XSLT 2.0, so you need to make it clear 
whether you want 
a 1.0 or a 2.0 solution.

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: SEXpeare [mailto:sexpeare(_at_)gmail(_dot_)com]
Sent: 08 March 2007 10:20
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Transforming a non-hierarchical XML into a 
hierarchical one

Hello everybody, I have to transform a non hierarchical XML:

      <sumario>
              <seccion txt=""/>
              <subseccion txt=""/>
              <organismo txt=""/>
              <anuncio txt=""/>
              <organismo txt=""/>
              <anuncio txt=""/>
              <organismo txt=""/>
              <anuncio txt=""/>
              <subseccion txt=""/>
              <organismo txt=""/>
              <anuncio txt=""/>
              <seccion txt=""/>
              <subseccion txt=""/>
              <organismo txt=""/>
              <anuncio txt=""/>
              ...
      </sumario>

into a hierarchical XML, doing this via XSLT. The result must be 
like this:

      <sumario>
              <seccion id="">
                      <subseccion id="">
                              <organismo id="">
                                      <anuncio>
                                      </anuncio>
                                      ...

                              </organismo>
                      </subseccion>
              </seccion>
              ...
      </sumario>

I would apreciate any idea or advice, thx.


--~-----------------------------------------------------------------
- XSL-List info and archive:  
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--