xsl-list
[Top] [All Lists]

Re: [xsl] Grouping multiple tags into one parent tag

2009-02-15 13:04:18
Re-reading your post, perhaps you meant the following:

  <xsl:template match="body">
    <xsl:if test="not(preceding-sibling::body)">
       <field name="body">
          <xsl:for-each select="../body">
             <p>
                <xsl:apply-templates/>
             </p>
          </xsl:for-each>
       </field>
    </xsl:if>
  </xsl:template>

This would produce:

  <field name="body">
    <p>content here</p>
    <p>content here</p>
    <p>content here</p>
  </field>

Perhaps this is what you need?

It would be more elegant if you did the work at the parent of body:

  <xsl:template match="name-of-body-parent-here">
   ... other stuff for parent...
       <field name="body">
          <xsl:for-each select="body">
             <p>
                <xsl:apply-templates/>
             </p>
          </xsl:for-each>
       </field>
  </xsl:template>

... or even:

  <xsl:template match="name-of-body-parent-here">
   ... other stuff for parent...
       <field name="body">
          <xsl:apply-templates select="body"/>
       </field>
  </xsl:template>
  <xsl:template match="body">
             <p>
                <xsl:apply-templates/>
             </p>
  </xsl:template>

Again, I hope this helps. If you could post an example of the desired output, there would be less guessing.

. . . . . . . . . . Ken

At 2009-02-15 12:55 -0500, Chad Chelius wrote:
I have xml with a section structured like this:

<body>content here</body>
<body>content here</body>
<body>content here</body>

I'd like to change all of the body elements to <p> tags and group all
of those original body elements (now <p> tags) into a parent element.

I've been using

  <xsl:template match="body">
       <field name="body">
           <xsl:apply-templates/>
       </field>

because the parent element needs to be <field name="body"> but each
original body element needs to be converted to <p> tags.

Can anyone assist me with this?




chad


--
Upcoming hands-on XSLT, UBL & code list hands-on training classes:
Brussels, BE 2009-03;  Prague, CZ 2009-03, http://www.xmlprague.cz
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal


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