XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
- XSLT Help and Discussion (7625)
-> + Use of before and after string (3) Sticky Topic
-> - How do I substitute element ty... (1)
-> + How does one add working days ... (4)
-> - Help, I have existing XLT and... (1)
-> + Need help on XSLT issue - (2)
-> + EDI to XML Conversion (7)
-> - XML To JSON Conversion using X... (1)
-> + Formatting Paragraphs to same ... (2)
-> - Grouping of records (1)
-> + Problems with xsd 1.1 (4)
-> + XML to HL7 mapping (3)
-> + XSLT 3 and Iterate (2)
-> + XSL-FO to PDF preview (3)
-> + java.lang.RuntimeException: Er... (2)
-> + Create Acroforms with Stylus X... (2)
-> + How to change XSLT parameter s... (3)
-> + how to change format of the da... (2)
-> + Search "Next 8 Results " doesn... (2)
-> - Support for Git (1)
-> + newbee (8)
-- [1-20] [21-40] [41-60] Next
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
jr linnihanSubject: Concatenate Same Element
Author: jr linnihan
Date: 24 Aug 2007 11:36 AM
I am new to XSLT programming and am trying to concatenate a series of elements that have the same name.

Here is a sample of my source XML:

<ordmsg>
<type>I</type>
<text>statement 1</text>
<text>statement 2</text>
<text>statement 3</text>
<text>statement 4</text>
<text>statement 5</text>
</ordmsg>

For my output I need to see:

<CommentType>I</CommentType>
<Text>statement 1 statement 2 statement 3 statement 4 statement 5</Text>

My XSLT currently looks like this:

<Comments>
<xsl:for-each select="ordmsg">
<Comment>
<xsl:attribute name="CommentType">
<xsl:value-of select="type" />
</xsl:attribute>
<xsl:attribute name="Text">
<xsl:choose>
<xsl:when test="text and string-length(normalize-space(text))=0">
<xsl:value-of select="'.'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="text" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</Comment>
</xsl:for-each>
</Comments>


The problem with this is that it is only returning the first <Text> element "statement 1". I need it to combine all <Text> elements.

Any suggestions?

Thanks in advance.

Postnext
Minollo I.Subject: Concatenate Same Element
Author: Minollo I.
Date: 24 Aug 2007 03:59 PM
...something like this?

<Comments>
<xsl:for-each select="ordmsg">
<Comment>
<xsl:attribute name="CommentType">
<xsl:value-of select="type"/>
</xsl:attribute>
<xsl:attribute name="Text">
<xsl:for-each select="text">
<xsl:choose>
<xsl:when test=". and string-length(normalize-space(.))=0">
<xsl:value-of select="'.'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:attribute>
</Comment>
</xsl:for-each>
</Comments>

Posttop
jr linnihanSubject: Concatenate Same Element
Author: jr linnihan
Date: 24 Aug 2007 05:16 PM
Perfect.

Thanks!

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.