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