RE: [xsl] XML Group with XSL

Subject: RE: [xsl] XML Group with XSL
From: aalikaj@xxxxxxxxxxxx
Date: Thu, 22 Apr 2004 10:20:15 -0400
Hi All,

I'm still trying to solve my problem.

In a few words, i'm trying to explain my problem again.

I have an XML file with this format:

<ROOT>
      <NODE1 ID = "1">
            <NODE1_1_A ID="1">
                  <NODE1_1_1_A ID = "1">
                        <NODE1_1_1_1_A ID = "1">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "2">
                              data
                        </NODE1_1_1_1_A>
                  </NODE1_1_1_A>
                  <NODE1_1_1_A ID = "2">
                        <NODE1_1_1_1_A ID = "1">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "2">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "3">
                              data
                        </NODE1_1_1_1_A>

                  </NODE1_1_1_A>

            </NODE1_1_A>

            <NODE1_1_A ID="2">
                  <NODE1_1_1_A ID = "1">
                        <NODE1_1_1_1_A ID = "1">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "2">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "3">
                              data
                        </NODE1_1_1_1_A>

                  </NODE1_1_1_A>

            </NODE1_1_A>
      </NODE1>
      <NODE1 ID = "1">
            <NODE1_1_A ID="1">

                  <NODE1_1_1_A ID = "1">
                        <NODE1_1_1_1_B ID = "1">
                              data
                        </NODE1_1_1_1_B>
                        <NODE1_1_1_1_B ID = "2">
                              data
                        </NODE1_1_1_1_B>
                        <NODE1_1_1_1_B ID = "3">
                              data
                        </NODE1_1_1_1_B>

                  </NODE1_1_1_A>

            </NODE1_1_A>
      </NODE1>
      <NODE1 ID = "1">
            <NODE1_1_A ID="1">

                  <NODE1_1_1_B ID = "1">
                        DATA
                  </NODE1_1_1_B>
                  <NODE1_1_1_B ID = "2">
                        DATA
                  </NODE1_1_1_B>

                  <NODE1_1_1_B ID = "3">
                        DATA
                  </NODE1_1_1_B>

            </NODE1_1_A>
      </NODE1>

      <NODE1 ID = "1">
            <NODE1_1_B ID="1">
                  DATA
            </NODE1_1_B>
            <NODE1_1_B ID="2">
                  DATA
            </NODE1_1_B>
            <NODE1_1_B ID="3">
                  DATA
            </NODE1_1_B>
            <NODE1_1_B ID="3">
                  DATA
            </NODE1_1_B>
      </NODE1>
</ROOT>

As you can see, the same node, with the same attributes, apears more than
once, so i want to collapse them. I want the following output

<ROOT>
      <NODE1 ID = "1">
            <NODE1_1_A ID="1">
                  <NODE1_1_1_A ID = "1">
                        <NODE1_1_1_1_A ID = "1">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "2">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_B ID = "1">
                              data
                        </NODE1_1_1_1_B>
                        <NODE1_1_1_1_B ID = "2">
                              data
                        </NODE1_1_1_1_B>
                        <NODE1_1_1_1_B ID = "3">
                              data
                        </NODE1_1_1_1_B>
                  </NODE1_1_1_A>
                  <NODE1_1_1_A ID = "2">
                        <NODE1_1_1_1_A ID = "1">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "2">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "3">
                              data
                        </NODE1_1_1_1_A>

                  </NODE1_1_1_A>
                  <NODE1_1_1_B ID = "1">
                        DATA
                  </NODE1_1_1_B>
                  <NODE1_1_1_B ID = "2">
                        DATA
                  </NODE1_1_1_B>

                  <NODE1_1_1_B ID = "3">
                        DATA
                  </NODE1_1_1_B>

            </NODE1_1_A>

            <NODE1_1_A ID="2">
                  <NODE1_1_1_A ID = "1">
                        <NODE1_1_1_1_A ID = "1">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "2">
                              data
                        </NODE1_1_1_1_A>
                        <NODE1_1_1_1_A ID = "3">
                              data
                        </NODE1_1_1_1_A>
                  </NODE1_1_1_A>
            </NODE1_1_A>

            <NODE1_1_B ID="1">
                  DATA
            </NODE1_1_B>
            <NODE1_1_B ID="2">
                  DATA
            </NODE1_1_B>
            <NODE1_1_B ID="3">
                  DATA
            </NODE1_1_B>
            <NODE1_1_B ID="3">
                  DATA
            </NODE1_1_B>
      </NODE1>
</ROOT>

I Can do this with DOM, but I want to use XSL if this is possible.

Thank you

Ardian Alikaj
Software Developer
Ntuitive Software & Systems.
E: aalikaj@xxxxxxxxxxxx
T: 416.863.9566 x326
F: 416.863.8919


                                                                                                                                      
                      "Michael Kay"                                                                                                   
                      <mhk@xxxxxxxxx>          To:       <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>                                            
                                               cc:                                                                                    
                      04/21/2004 06:31         Subject:  RE: [xsl] XML Group with XSL                                                 
                      PM                                                                                                              
                      Please respond to                                                                                               
                      xsl-list                                                                                                        
                                                                                                                                      
                                                                                                                                      




> How can I exclude the node_1 from the following code
> <xsl:template match="node_1">
>              <xsl:copy-of select="."/>
> </xsl:template>
>
> It prints out node_1 with its children. I want only children elements,
> because "node_1" has been prented once

Use <xsl:copy select="*">.

Michael Kay

Current Thread