xsl-list
[Top] [All Lists]

Re: attempt at dynamic sizing a table

2002-10-24 09:48:14
Are you asking how to plug that ratio in, along with
the unit?

It's pretty simple I think:

concat(string-length() * 12,'pt')

like this

<xsl:template match="table">
 <xsl:variable name="product" select="string-length()
* 12"/>
 <tabl>
   <xsl:for-each select="row/cell[1]">
    <xsl:sort data-type="number" order="descending"
select="string-length()"/>
     <xsl:if test="position()=1">
      <table-column
column-width="{concat(string-length() * 12,'pt')}" />
     </xsl:if>
   </xsl:for-each>
   <xsl:for-each select="row/cell[2]">
    <xsl:sort data-type="number" order="descending"
select="string-length()"/>
     <xsl:if test="position()=1">
      <table-column
column-width="{concat(string-length() * 12,'pt')}" />
     </xsl:if>
   </xsl:for-each>
   <xsl:for-each select="row/cell[3]">
    <xsl:sort data-type="number" order="descending"
select="string-length()"/>
     <xsl:if test="position()=1">
      <table-column
column-width="{concat(string-length() * 12,'pt')}" />
     </xsl:if>
   </xsl:for-each>
 </tabl>
</xsl:template>

Am I understanding your question?

Bryan Schnabel

--- Noel Golding <noel(_at_)spearreport(_dot_)com> wrote:
is it possible to set a column-width to pt?  That
would be ok.  If I had 12
characters at 12pt that would make the column-width
144pt.  Is that
feasible?

Thanks!!

----- Original Message -----
From: "Bryan Schnabel"
<bryan(_dot_)schnabel(_at_)bschnabel(_dot_)com>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Wednesday, October 23, 2002 7:23 PM
Subject: Re: [xsl] attempt at dynamic sizing a table


An approach would be to isolate, sort, then put
the
top value in the attribute, like this:

<xsl:template match="table">
 <tabl>
   <xsl:for-each select="row/cell[1]">
    <xsl:sort data-type="number"
order="descending"
select="string-length()"/>
     <xsl:if test="position()=1">
      <table-column
column-width="{string-length()}"
/>
     </xsl:if>
   </xsl:for-each>
   <xsl:for-each select="row/cell[2]">
    <xsl:sort data-type="number"
order="descending"
select="string-length()"/>
     <xsl:if test="position()=1">
      <table-column
column-width="{string-length()}"
/>
     </xsl:if>
   </xsl:for-each>
   <xsl:for-each select="row/cell[3]">
    <xsl:sort data-type="number"
order="descending"
select="string-length()"/>
     <xsl:if test="position()=1">
      <table-column
column-width="{string-length()}"
/>
     </xsl:if>
   </xsl:for-each>
 </tabl>
</xsl:template>

I don't think I understand the second part of your
question.  But to convert string-length to cm or
in
would involve determining the 'character to cm
ratio',
or the 'character to in ratio' (which I cannot
imagine) and plug it in.

Bryan

--- Noel Golding <noel(_at_)spearreport(_dot_)com> wrote:
If given the XML below how could you determine
the
max-string-length for
each column and then how would you convert that
to
cm or in?  I hope I am
clear enough

--XML--
<table>
 <row>
  <cell>
   A.
  </cell>
  <cell>
   B.
  </cell>
  <cell>
   C.
  </cell>
 </row>
 <row>
  <cell>
   There is some text here
  </cell>
  <cell>
   More text
  </cell>
  <cell/>
 </row>
 <row>
  <cell>
   A little text
  </cell>
  <cell>
   This cell contains more text than the one
before
  </cell>
  <cell>
   Something goes here!!
  </cell>
 </row>
</table>

--Desired Output--
<table>
 <table-column column-width="5cm" /> <!-- Second
widest -->
 <table-column column-width="8cm" /> <!-- Widest
-->
 <table-column column-width="4cm" /> <!--
Smallest
-->
    ...


 XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list