XSLT / XPATH-查找具有最多列的表行

时间:2019-06-10 17:10:32

标签: xml xslt xpath

我正在将xml表转换为其他表规范,并且我需要确定给定表中任何行中存在的最大列数。因此,如果我的XML是:

<table>
    <row>
        </column>
    </row>
    <row>
        </column>
        </column>
        </column>
    </row>
    <row>
        </column>
        </column>
    </row>  
</table>

我需要在表模板中获取“ 3”作为变量,以便可以如下重写表:

<table cols="3">
...

我正在这样做,这很愚蠢(但是足够好...)。

    <xsl:template match="table">        
        <xsl:variable name="high_col_count">
            <xsl:choose>
                ...
                <xsl:when test="tr/td[position()=4]">4</xsl:when>
                <xsl:when test="tr/td[position()=3]">3</xsl:when>
                <xsl:when test="tr/td[position()=2]">2</xsl:when>
                ...
            </xsl:choose>
        </xsl:variable>
    ...
</xsl:template>

我无法确定一个更好的方法是不对变量进行迭代,据我所知,由于变量是不可变的,在xslt中这是不可能的。有没有更简单的方法可以简单地从列数最多的行中检索计数?

1 个答案:

答案 0 :(得分:1)

尝试使用此代替:

<xsl:template match="table">
  <table cols="{max(row/count(column))}">
  ...
  </table>
</xsl:template>