Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XSLT
|
XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old July 12th, 2013, 10:30 AM
Authorized User
 
Join Date: Jun 2013
Posts: 21
Thanks: 2
Thanked 0 Times in 0 Posts
Default XSLT-displaying the number followed by alphabets

Input xml

Code:
<PassengerList>
<SeatNumber>1A</SeatNumber>
<SeatNumber>1B</SeatNumber>
<SeatNumber>1D</SeatNumber>
<SeatNumber>1E</SeatNumber>
<SeatNumber>1F</SeatNumber>
<SeatNumber>1G</SeatNumber>
<SeatNumber>2B</SeatNumber>
<SeatNumber>2D</SeatNumber>
<SeatNumber>3A</SeatNumber>
<SeatNumber>3B</SeatNumber>
<SeatNumber>3D</SeatNumber>
<SeatNumber>3E</SeatNumber>
<SeatNumber>4A</SeatNumber>
<SeatNumber>4B</SeatNumber>
<SeatNumber>4E</SeatNumber>
<SeatNumber>4F</SeatNumber>
<SeatNumber>4G</SeatNumber>
<SeatNumber>4J</SeatNumber>
</PassengerList>

XSLT CODE
Code:
<xsl:template match="PassengerList">
<xsl:variable name="seatgroup">
  <xsl:for-each-group select="SeatNumber" group-by="replace(., '[^0-9]+', '')">
    <xsl:value-of select="current-grouping-key(), current-group()/replace(., '[0-9]+', '')" separator=""/>
  </xsl:for-each-group>
</xsl:variable>
<xsl:value-of select="$seatgroup"/>
</xsl:template>
My question:
I tried your sample..I am getting error like 'variable is not declared 'like that, which is not accepting the variable.

My question is, based on the output I got to do line wrap if seatnumber exceeding 50 characters.I dont want to access the particular item like 1 or 2. I need the final output. In my case as below,

'1ABDEFG 2BD 3ABDE 4ABEFGJ'

I need the above output content as it is, so that I cant do Line wraping or any string functions.

replace(concat(normalize-space($text),' '),
'(.{0,50}) ',
'$1&#xA;')

I got to pass my output value to this above function for line wrap.
How can I access this value.?Is it possible? Please help me

Last edited by sen1953; July 12th, 2013 at 11:09 AM.. Reason: formating added new contents
 
Old July 12th, 2013, 11:54 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

I don't know what the problem is exactly. When I use Saxon 9 to run the stylesheet
Code:
<xsl:stylesheet
  version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  exclude-result-prefixes="xs">
  
<xsl:output method="text"/>

<xsl:template match="PassengerList">
  <xsl:variable name="seats">
    <xsl:for-each-group select="SeatNumber" group-by="replace(., '[^0-9]+', '')">
      <xsl:if test="position() gt 1"><xsl:text> </xsl:text></xsl:if>
      <xsl:value-of select="current-grouping-key(), current-group()/replace(., '[0-9]+', '')" separator=""/>
    </xsl:for-each-group>
  </xsl:variable>
  <xsl:value-of select="replace($seats, '(.{1,15})', '$1
')"/>
</xsl:template>

</xsl:stylesheet>
on the input
Code:
<PassengerList>
<SeatNumber>1A</SeatNumber>
<SeatNumber>1B</SeatNumber>
<SeatNumber>1D</SeatNumber>
<SeatNumber>1E</SeatNumber>
<SeatNumber>1F</SeatNumber>
<SeatNumber>1G</SeatNumber>
<SeatNumber>2B</SeatNumber>
<SeatNumber>2D</SeatNumber>
<SeatNumber>3A</SeatNumber>
<SeatNumber>3B</SeatNumber>
<SeatNumber>3D</SeatNumber>
<SeatNumber>3E</SeatNumber>
<SeatNumber>4A</SeatNumber>
<SeatNumber>4B</SeatNumber>
<SeatNumber>4E</SeatNumber>
<SeatNumber>4F</SeatNumber>
<SeatNumber>4G</SeatNumber>
<SeatNumber>4J</SeatNumber>
<SeatNumber>5A</SeatNumber>
<SeatNumber>5B</SeatNumber>
<SeatNumber>5C</SeatNumber>
</PassengerList>
I get the result
Code:
1ABDEFG 2BD 3AB
DE 4ABEFGJ 5ABC
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
The Following User Says Thank You to Martin Honnen For This Useful Post:
sen1953 (July 15th, 2013)
 
Old July 15th, 2013, 06:08 AM
Authorized User
 
Join Date: Jun 2013
Posts: 21
Thanks: 2
Thanked 0 Times in 0 Posts
Default Thanks Martin

Its works fine for my requiredments. Thanks a lot to Martin...I have completed my task.





Similar Threads
Thread Thread Starter Forum Replies Last Post
xslt number count sunnykeerthi XSLT 1 April 15th, 2013 12:14 PM
Sorting and Paging GridView using Alphabets yukijocelyn ASP.NET 2.0 Basics 9 August 29th, 2007 04:05 PM
Displaying a number of results fogofogo XSLT 2 November 22nd, 2005 12:18 PM
Can XSLT tell if there is a number as a value. insanek XSLT 4 September 14th, 2005 03:35 AM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.