2015-11-06 76 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