?
Solved

xsl template for converting string to xsl-fo table

Posted on 2010-08-13
1
Medium Priority
?
496 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

Create CentOS 7 Newton Packstack Running Keystone

A bug was filed against RDO for the installation of Keystone v3. This guide is designed to walk you through the configuration for using Keystone v3 with Packstack. You will accomplish this using various repos and the Answers file.

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…
Styling your websites can become very complex. Here I'll show how SASS can help you better organize, maintain and reuse your CSS code.
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).
Suggested Courses

771 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