首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT group-by抛出错误

XSLT group-by抛出错误
EN

Stack Overflow用户
提问于 2013-04-26 17:10:39
回答 2查看 1K关注 0票数 0

xml如下:

代码语言:javascript
复制
<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>

我想使用分组功能(group by replace)将其转换为html输出(而不是xml输出)中的表。

代码语言:javascript
复制
<table>
   <tr><td>Replace: Fruit</td></tr>
   <tr><td>Replace: Car</td></tr>
</table>

我写的代码是:

代码语言:javascript
复制
<?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链接)时,会返回"Error during XSLT transformation: XSLT转换失败“。

有谁能给我指点一下吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-26 17:39:07

Mozilla,IE,Opera,Chrome等浏览器支持的XSLT仅限于不支持for-each-group的xslt1.0版。在XSLT1.0中,您只能使用Muenchian http://www.jenitennison.com/xslt/grouping/muenchian.xml

作为替代方案,您可以考虑使用Saxon CE,它在浏览器中提供了XSLT2.0。参见http://www.saxonica.com/ce/index.xml

票数 1
EN

Stack Overflow用户

发布于 2013-04-26 18:05:19

Firefox本身并不支持XSLT 2.0。请参阅以下链接:https://developer.mozilla.org/en/docs/XSLT_2.0

因此,我使用了下面的XSLT,并使用了Muenchian分组。

代码语言:javascript
复制
<?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,并获得了所需的输出和正确的视图

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16232709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档