2015-11-06 40 views
0

我有要使用XSLT在一个表中显示的XML文件中的一个表中的两个细胞,我想用colspan设为合并单元当两个节点具有相同的值,例如:合并使用XSLT

<Magasin> 
    <bouteille> 
     <marque>marque1</marque>  
    </bouteille> 
    <bouteille> 
     <marque>marque1</marque> 
    </bouteille> 
    <bouteille> 
     <marque>marque2</marque> 
    </bouteille> 
</Magasin> 

这里是我的XSLT:

<table> 
<thead> 
<tr><xsl:for-each select="document('Pub.xml')/Magasin/bouteille/marque"> 
<th><xsl:value-of select="."/></th> 
</xsl:for-each></tr> 
</thead>        
</table> 
+0

对不起,我不清楚,我张贴真正的代码。 – Mina

+0

这是*分组*问题:你可以使用XSLT 2.0吗? –

+0

@ michael.hor257k我正在使用版本2.0 – Mina

回答

0

在XSLT 2.0,你可以这样做:

<xsl:for-each-group select="document('Pub.xml')/Magasin/bouteille" group-adjacent="marque"> 
    <xsl:variable name="size" select="count(current-group())" /> 
    <th> 
     <xsl:if test="$size gt 1"> 
      <xsl:attribute name="colspan" select="$size"/> 
     </xsl:if> 
     <xsl:value-of select="current-grouping-key()"/> 
    </th> 
</xsl:for-each-group> 
+0

您的解决方案确实有帮助,但如果其中一个节点为空,它将显示一条错误消息:不允许空序列作为xsl:for-each的@ group-adjacent属性-组。 – Mina

+0

这种情况下的预期结果是什么?请编辑您的问题并向我们展示输入和预期输出的示例。 –

+0

我用'group-by'来替代它,它的工作非常感谢 – Mina