Solved

xsl template for converting string to xsl-fo table

Posted on 2010-08-13
1
489 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
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

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

This article covers the basics of the Sass, which is a CSS extension language. You will learn about variables, mixins, and nesting.
JavaScript has plenty of pieces of code people often just copy/paste from somewhere but never quite fully understand. Self-Executing functions are just one good example that I'll try to demystify here.
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…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

762 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now