XML : XSLT Regrouping based on attribute value ID

I have following XML

  <group id="a">  <Name>Number One</Name>  <setgroup>  <refgroup ID="b">  <refgroup ID="c">  </setgroup>  </group>      <group id="b">  <Name>Number Two</Name>  <setgroup>  <refgroup ID="c">  <refgroup ID="e">  </setgroup>  </group>    <group id="c">  <Name>Number Three</Name>  <setgroup>  <refgroup ID="g">  <refgroup ID="f">  </setgroup>  </group>    

As an output I need to have

  <Product>     <Name>Number One</Name>     <Product>      <Name>Number Two</Name>         <Product>            <Name>Number Three</Name>         </Product>     </Product>  </Product>    

So basically, as soon as I've iterated through that node, my new xml shall not include in once again.

So I need to retree based on my xslt

what I have so far:

  <Products>                  <xsl:for-each select="*:PIMXMLExport[fn:namespace-uri() eq '']/*:group[fn:namespace-uri() eq '']">                      <Product>                          <Name>                              <xsl:for-each select="(./*:Name[fn:namespace-uri() eq '']/node())[fn:boolean(self::text())]">                                  <xsl:sequence select="fn:string(.)"/>                              </xsl:for-each>                          </Name>                          <xsl:for-each select="*:setgroup[fn:namespace-uri() eq '']/*:refgroup[fn:namespace-uri() eq '']">                              <Product>                                      <Name>                                       <xsl:variable name="header_pos" select="@OIDRef"/>                                          <xsl:value-of select="/PIMXMLExport/group[@asimoid = $header_pos]/Name"/>                                      </Name>                              </Product>                          </xsl:for-each>                       </Product>                  </xsl:for-each>              </Products>    

No comments:

Post a Comment