純粋なワンライナー XPath 2.0 ソリューション、テーブルが規則的な構造を持っていると仮定します (各行には同じ数の列があります):
for $i in 1 to count(/*/tr[1]/td)
return
max(/*/tr/td[$i]/string-length())
XSLT 2.0 ベースの検証:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:sequence select=
"for $i in 1 to count(/*/tr[1]/td)
return
max(/*/tr/td[$i]/string-length())
"/>
</xsl:template>
</xsl:stylesheet>
この変換が提供された XML ドキュメントに適用されると、次のようになります。
<table>
<tr>
<td>ONE</td>
<td>TWO</td>
<td>THREE</td>
</tr>
<tr>
<td>Monaco</td>
<td>Bangkok</td>
<td>Thailand</td>
</tr>
</table>
XPath 式が評価され、この評価の結果が出力にコピーされます。
6 7 8