xml如下:
<Words num="1">
<Word>
<search>Apple</search>
<replace>Fruit</replace>
</Word>
<Word num="2">
<search>Honda</search>
<replace>Car</replace>
</Word>
<Word num="3">
<search>Banana</search>
<replace>Fruit</replace>
</Word>
</Words>
我想在html输出(不是xml输出)的表中转换它 - 使用分组功能(group by replace)。
<table>
<tr><td>Replace: Fruit</td></tr>
<tr><td>Replace: Car</td></tr>
</table>
我写的代码是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<body>
<table border="1">
<xsl:for-each-group select="Words/Word" group-by="replace">
<tr>
<td>Replace: <xsl:value-of select="current-grouping-key()"/></td>
</tr>
</xsl:for-each-group>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
在Firefox中打开xml文件(与xslt链接)时,它返回“XSLT转换期间出错:XSLT转换失败。”
任何人都可以向我提供指导吗?
感谢。
答案 0 :(得分:1)
Mozilla,IE,Opera,Chrome等浏览器支持的XSLT仅限于不支持for-each-group
的XSLT 1.0版。使用XSLT 1.0,您只能使用Muenchian分组http://www.jenitennison.com/xslt/grouping/muenchian.xml。
作为替代方案,您可以考虑使用Saxon CE,它在浏览器中提供XSLT 2.0。请参阅http://www.saxonica.com/ce/index.xml。
答案 1 :(得分:0)
Firefox中本身不支持XSLT 2.0。请参考以下链接: https://developer.mozilla.org/en/docs/XSLT_2.0
所以我使用下面的XSLT使用Muenchian分组。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:key name="Kreplace" match="Word" use="replace"/>
<xsl:template match="Words">
<html>
<body>
<table border="1">
<tr>
<xsl:for-each select="Word[generate-id(.)=generate-id(key('Kreplace',replace)[1])]">
<td>Replace: <xsl:value-of select="replace"/></td>
</xsl:for-each>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
现在我在Firefox中查看了相同的XML,并获得了所需的输出和正确的视图