2012-08-13 39 views
1

我有一个XSLT 2.0,它将xhtml表转换为InDesign XML表。此XSLT计算的最大数量<td>每行内的元素<tr>下面模板中的第7行(max(for $td in //tr return count($td/td)))。计数​​XHTML中的元素<table>与XSLT 1.0

<xsl:template match="table"> 
    <xsl:element name="id_table"> 
     <xsl:attribute name="aid:trows"> 
      <xsl:value-of select="count(child::*/tr)"/> 
     </xsl:attribute> 
     <xsl:attribute name="aid:tcols"> 
      <xsl:value-of select="max(for $td in //tr return count($td/td))"/> 
     </xsl:attribute> 
     <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

我不知道如何用XSLT 1.0实现这一点 - 任何想法将不胜感激!可悲的是工作流程中只有一个1.0处理器。

回答

2
<xsl:attribute name="aid:tcols"> 
    <xsl:for-each select="//tr"> 
    <xsl:sort select="count(td)" order="descending"/> 
    <xsl:if test="position() = 1"> 
     <xsl:value-of select="count(td)"/> 
    </xsl:if> 
    </xsl:for-each> 
</xsl:attribute> 

应该做的。

+0

谢谢。 诀窍! – grefel 2012-08-14 09:37:22

+0

如果您在文档中有多个表格,您需要修改第2行:' grefel 2012-08-14 16:53:43