December 2002
Intermediate to advanced
672 pages
16h 53m
English
You want to format data into columns for presentation.
There are two general kinds of XML-to-columnar mappings. The first maps different elements or attributes into separate columns. The second maps elements based on their relative position.
Before tackling these variations, you need a generic template that
will help justify output text into a fixed-width column. You can
build such a routine, shown in Example 5-17, on top
of the str:dup template you created in Recipe 1.5.
Example 5-17. Generic text-justification template—text.justify.xslt
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://www.ora.com/XSLTCookbook/namespaces/strings" xmlns:text="http://www.ora.com/XSLTCookbook/namespaces/text" extension-element-prefixes="text"> <xsl:include href="../strings/str.dup.xslt"/> <xsl:template name="text:justify"> <xsl:param name="value" /> <xsl:param name="width" select="10"/> <xsl:param name="align" select=" 'left' "/> <!-- Truncate if too long --> <xsl:variable name="output" select="substring($value,1,$width)"/> <xsl:choose> <xsl:when test="$align = 'left'"> <xsl:value-of select="$output"/> <xsl:call-template name="str:dup"> <xsl:with-param name="input" select=" ' ' "/> <xsl:with-param name="count" select="$width - string-length($output)"/> </xsl:call-template> </xsl:when> <xsl:when test="$align = 'right'"> <xsl:call-template name="str:dup"> <xsl:with-param name="input" select=" ' ' "/> <xsl:with-param ...
Read now
Unlock full access