一个纯单行 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