Solved

xsl template for converting string to xsl-fo table

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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Suggested Solutions

Styling your websites can become very complex. Here I'll show how SASS can help you better organize, maintain and reuse your CSS code.
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.
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

863 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

28 Experts available now in Live!

Get 1:1 Help Now