Subject: RE: CALS Tables (was: RE: [xsl] XSL(check attribute exists in the parent node and get value for another attribute in the same node)) From: "Andrew Welch" <AWelch@xxxxxxxxxxxxxxx> Date: Thu, 14 Aug 2003 09:41:18 +0100 |
> hi andrew, > > If you have a css which has t,bl & r defined, can you > please copy it for me. > > Thanks, Sure, It's as you would have probably guessed: .t {border-top-color:black ; border-top-style:solid; border-top-width:1} .b {border-bottom-color:black ; border-bottom-style:solid ; border-bottom-width:1} .l {border-left-color:black ; border-left-style:solid ; border-left-width:1} .r {border-right-color:black ; border-right-style:solid ; border-right-width:1} > --- Andrew Welch <AWelch@xxxxxxxxxxxxxxx> wrote: > > > > For anyone working with CALS tables, here is a > > stylesheet I wrote a while back to display them. I > > think it covers all of the variations that CALS > > allows (which is a lot). > > > > It will produce a table 300px high, with a 'fixed > > header' so that the body scrolls while the head is > > fixed. > > > > It just requires that 't' 'b' 'l' and 'r' are > > defined in your CSS as 1px solid black borders. > > > > Im confident that it can take whatever gets thrown > > at it, but if anyone can improve it (and repost :) > > or find a fault, please let me know. > > > > cheers > > andrew > > > > (Ive just removed some things specific to my > > company, so if some of the html structure looks > > slightly off, its probably because Ive just deleted > > some it) > > > > > > <xsl:stylesheet > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > > xmlns:exsl="http://exslt.org/common" > > extension-element-prefixes="exsl" > > version="1.0"> > > > > <xsl:param name="print" select="'no'"/> > > <xsl:param name="printWidth" select="0"/> > > > > <!-- tests for aircrew dm, we dont use scroll bars > > on aircrew dm's--> > > <xsl:variable name="acrw" > > select="boolean(/dmodule/content/acrw)"/> > > > > <xsl:variable name="colspecs-firstPass-rtf"> > > <xsl:for-each select="//table"> > > <table id="{generate-id()}"> > > <xsl:for-each select="tgroup"> > > <tgroup id="{generate-id()}"> > > <xsl:for-each select=".//colspec"> > > <col id="{generate-id()}" > > colname="{@colname}" > > number="{count(preceding-sibling::colspec|.)}" > > width="{translate(@colwidth,'inm*','')}" > > align="{@align}"> > > <xsl:attribute name="inHead"> > > <xsl:choose> > > <xsl:when > > test="parent::thead">yes</xsl:when> > > <xsl:otherwise>no</xsl:otherwise> > > </xsl:choose> > > </xsl:attribute> > > </col> > > </xsl:for-each> > > <xsl:for-each select="spanspec"> > > <spanspec id="{generate-id()}" > > spanname="{@spanname}" namest="{@namest}" > > nameend="{@nameend}" align="{@align}"/> > > </xsl:for-each> > > </tgroup> > > </xsl:for-each> > > </table> > > </xsl:for-each> > > </xsl:variable> > > > > <xsl:variable name="colspecs-firstPass" > > select="exsl:node-set($colspecs-firstPass-rtf)"/> > > > > <xsl:variable name="colspecs-rtf"> > > <xsl:for-each select="$colspecs-firstPass"> > > <xsl:for-each select="table"> > > <table id="{@id}"> > > <xsl:for-each select="tgroup"> > > <tgroup id="{@id}"> > > <xsl:variable name="totalGroupWidth" > > select="sum(col[@inHead = 'no']/@width)"/> > > <xsl:variable name="totalHeadWidth" > > select="sum(col[@inHead = 'yes']/@width)"/> > > <xsl:for-each select="col"> > > <col id="{@id}" colname="{@colname}" > > number="{@number}" align="{@align}" > > inHead="{@inHead}"> > > <xsl:attribute name="width"> > > <xsl:choose> > > <xsl:when test="@inHead = 'no'"> > > <xsl:value-of select="@width > > div $totalGroupWidth * 100"/> > > </xsl:when> > > <xsl:otherwise> > > <xsl:value-of select="@width > > div $totalHeadWidth * 100"/> > > </xsl:otherwise> > > </xsl:choose> > > </xsl:attribute> > > </col> > > </xsl:for-each> > > <xsl:for-each select="spanspec"> > > <xsl:copy-of select="."/> > > </xsl:for-each> > > </tgroup> > > </xsl:for-each> > > </table> > > </xsl:for-each> > > </xsl:for-each> > > </xsl:variable> > > > > <xsl:variable name="colspecs" > > select="exsl:node-set($colspecs-rtf)"/> > > > > <xsl:variable name="spanspecs-rtf"> > > <xsl:for-each select="$colspecs"> > > <xsl:for-each select="table/tgroup"> > > <xsl:variable name="tgroupId" select="@id"/> > > <xsl:for-each select="spanspec"> > > <col id="{@id}" spanname="{@spanname}"> > > <xsl:attribute name="colspan"> > > <xsl:value-of select="1 + > > preceding-sibling::col[@colname = > > current()/@nameend]/@number - > > preceding-sibling::col[@colname = > > current()/@namest]/@number"/> > > </xsl:attribute> > > <xsl:attribute name="width"> > > <xsl:call-template > > name="calculateWidth"> > > <xsl:with-param name="tgroupId" > > select="$tgroupId"/> > > <xsl:with-param name="startCol" > > select="preceding-sibling::col[@colname = > > current()/@namest]/@number"/> > > <xsl:with-param name="endCol" > > select="preceding-sibling::col[@colname = > > current()/@nameend]/@number"/> > > </xsl:call-template> > > </xsl:attribute> > > <xsl:attribute name="align"> > > <xsl:choose> > > <xsl:when > > test="string-length(@align)"><xsl:value-of > > select="@align"/></xsl:when> > > <xsl:otherwise><xsl:value-of > > select="preceding-sibling::col[@colname = > > current()/@nameend]/@align"/></xsl:otherwise> > > </xsl:choose> > > </xsl:attribute> > > </col> > > </xsl:for-each> > > </xsl:for-each> > > </xsl:for-each> > > </xsl:variable> > > > > <xsl:variable name="spanspecs" > > select="exsl:node-set($spanspecs-rtf)"/> > > > > <xsl:template name="calculateWidth"> > > <xsl:param name="tgroupId" select="0"/> > > <xsl:param name="startCol" select="0"/> > > <xsl:param name="endCol" select="0"/> > > <xsl:param name="totalWidth" select="0"/> > > <xsl:choose> > > <xsl:when test="$startCol <= $endCol"> > > <xsl:call-template name="calculateWidth"> > > <xsl:with-param name="tgroupId" > > select="$tgroupId"/> > > <xsl:with-param name="startCol" > > select="$startCol + 1"/> > > <xsl:with-param name="endCol" > > select="$endCol"/> > > <xsl:with-param name="totalWidth"> > > <xsl:for-each select="$colspecs"> > > <xsl:for-each select="table/tgroup[@id = > > $tgroupId]"> > > <xsl:value-of select="col[@number = > > $startCol]/@width + $totalWidth"/> > > </xsl:for-each> > > </xsl:for-each> > > </xsl:with-param> > > </xsl:call-template> > > </xsl:when> > > <xsl:otherwise> > > <xsl:value-of select="$totalWidth"/> > > </xsl:otherwise> > > </xsl:choose> > > </xsl:template> > > > > <xsl:template name="getBorders"> > > <xsl:param name="frame" select="''"/> > > <xsl:choose> > > <xsl:when test="$frame = 'ALL'">t b l > > r</xsl:when> > > <xsl:when test="$frame = 'TOP'">t</xsl:when> > > <xsl:when test="$frame = 'TOPBOT'">t > > b</xsl:when> > > <xsl:when test="$frame = 'BOTTOM'">b</xsl:when> > > <xsl:when test="$frame = 'SIDES'">l r</xsl:when> > > > === message truncated === > > > __________________________________ > Do you Yahoo!? > Yahoo! SiteBuilder - Free, easy-to-use web site design software > http://sitebuilder.yahoo.com > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: CALS Tables (was: RE: [xsl] XSL, smiley | Thread | [xsl] RE: CALS Tables & CSS, smiley |
RE: [xsl] Number of scans required , Michael Kay | Date | [xsl] RE: pass malformed HTML throu, Jaques, Yves (FIDI) |
Month |