xsl-list
[Top] [All Lists]

Re: [xsl] Recursive wrapping

2006-07-13 08:47:03
Something like below perhaps?

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="Attribute">
    <OtherAttributes>
      <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
      </xsl:copy>
<xsl:apply-templates select="following-sibling::*[1][self::Attribute]" mode="att"/>
    </OtherAttributes>
  </xsl:template>
<xsl:template match="Attribute[preceding-sibling::*[1][self::Attribute]]"/>

  <xsl:template match="Attribute" mode="att">
      <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
      </xsl:copy>
<xsl:apply-templates select="following-sibling::*[1][self::Attribute]" mode="att"/>
  </xsl:template>

  <xsl:template match="node() | @*" mode="att">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


Khorasani, Houman wrote:
Hi,

I have a problem, which should be quite straight forward but I can't
find the solution.


XML:

<a>1</a>
<b>2</b>
<Attribute>
        <Name>xx</Name>
        <Value>xx</Value>
</Attribute>
<Attribute>
        <Name>yy </Name>
        <Value>yy</Value>
</Attribute>
...
<c>3</c>



Would like to generate:
<a>1</a>
<b>2</b>
<OtherAttributes>
        <Attribute>
                <Name>xx</Name>
                <Value>xx</Value>
        </Attribute>
        <Attribute>
                <Name>yy </Name>
                <Value>yy</Value>   
        </Attribute>
        ...
</OtherAttributes>
<c>3</c>

There could be 0 to n attribute elements and I would like to wrap them
between an OtherAttributes.

I have tried to solve it by recursive templates, but somehow I don't get
there.  Any suggestions?

Many thanks
Houman

--~------------------------------------------------------------------
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>
--~--

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