Solved

xsl template for converting string to xsl-fo table

Posted on 2010-08-13
1
495 Views
Last Modified: 2013-11-08
Dear experts,

here is the story:
-from the database I get a simple string, which i just need to output to a table cell,
-but sometimes I get a string which has newlines (	 )and tab character (
) in it,
--whenever I get this kind of string, I'd like to output it in a table cell which would mimic the NL&TAB formatting

I wanted to mimic the formatting by the means of a table. I am able to convert newlines to <fo:table-rows> and recursively print it out, but now I am stuck with recursivelly creating table-cells.

The code bellow creates table with corresponding number of rows (each new line is new table row)

Can anyone help me with creating a full table?
<xsl:template name="format_string">
		<xsl:param name="niz"/>
		<fo:table>
			<fo:table-body>
				<xsl:call-template name="format_string2tablerows">
					<xsl:with-param name="niz" select="$niz" />
				</xsl:call-template>
			</fo:table-body>
		</fo:table>
	</xsl:template>

	<xsl:template name="format_string2tablerows">
		<xsl:param name="niz" />
		<xsl:choose>
			<xsl:when test="contains($niz,'&#10;')">
				<fo:table-row>
					<fo:table-cell>
						<fo:block><xsl:value-of select="substring-before($niz,'&#10;')" /></fo:block>
					</fo:table-cell>
				</fo:table-row>
				<xsl:call-template name="format_string2tablerows">
					<xsl:with-param name="niz" select="substring-after($niz,'&#10;')" />
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<fo:table-row>
					<fo:table-cell>
						<fo:block>			
							<xsl:call-template name="format_object">
								<xsl:with-param name="niz" select="$niz" />
							</xsl:call-template>
						</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</xsl:otherwise>
		</xsl:choose>				
	</xsl:template>

Open in new window

0
Comment
Question by:zeldi
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 

Accepted Solution

by:
zeldi earned 0 total points
ID: 33435896
Never mind, I've found a solution by myself.

<xsl:template name="format_string">
		<xsl:param name="niz"/>
		<fo:table>
			<fo:table-body>
				<xsl:call-template name="format_string2tablerows">
					<xsl:with-param name="niz" select="$niz" />
				</xsl:call-template>
			</fo:table-body>
		</fo:table>
	</xsl:template>
	<xsl:template name="format_string2tablerows">
		<xsl:param name="niz" />
		<xsl:choose>
			<xsl:when test="contains($niz,'&#10;')">
				<fo:table-row>
					<xsl:call-template name="format_string2tablecells">
						<xsl:with-param name="niz" select="substring-before($niz,'&#10;')" />
					</xsl:call-template>
				</fo:table-row>
				<xsl:call-template name="format_string2tablerows">
					<xsl:with-param name="niz" select="substring-after($niz,'&#10;')" />
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<fo:table-row>
					<xsl:call-template name="format_string2tablecells">
						<xsl:with-param name="niz" select="$niz" />
					</xsl:call-template>
				</fo:table-row>
			</xsl:otherwise>
		</xsl:choose>				
	</xsl:template>
	<xsl:template name="format_string2tablecells">
		<xsl:param name="niz" />
		<xsl:choose>
			<xsl:when test="contains($niz,'&#9;')">
				<fo:table-cell>
					<fo:block>
						<xsl:call-template name="format_object">
							<xsl:with-param name="niz" select="substring-before($niz,'&#9;')" />
						</xsl:call-template>					
					</fo:block>
				</fo:table-cell>
				<xsl:call-template name="format_string2tablecells">
					<xsl:with-param name="niz" select="substring-after($niz,'&#9;')" />
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<fo:table-cell>
					<fo:block>			
						<xsl:call-template name="format_object">
							<xsl:with-param name="niz" select="$niz" />
						</xsl:call-template>
					</fo:block>
				</fo:table-cell>
			</xsl:otherwise>
		</xsl:choose>				
	</xsl:template>

Open in new window

0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I will show you how to create a ASP.NET Captcha control without using any HTTP HANDELRS or what so ever. you can easily plug it into your web pages. For Example a = 2 + 3 (where 2 and 3 are 2 random numbers) Session("Answer") = 5 then we…
I found this questions asking how to do this in many different forums, so I will describe here how to implement a solution using PHP and AJAX. The logical flow for the problem should be: Write an event handler for the first drop down box to get …
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question