xml - xsl :sort inside for-each-group()

标签 xml xslt saxon xslt-3.0

由于某种原因,自升级到 Saxon 9.7.0.1 以来,for-each-group 中的 xsl:sort 抛出异常

XML-

<table class="vv">
        <tr><td>woot1</td><td>woot2</td></tr>
        <tr><td>woot1</td><td>woot2</td></tr>
        <tr><td>woot1</td><td>woot2</td></tr>
        <tr><td>woot1</td><td>woot2</td></tr>
</table>

XSL-

<xsl:template match="/">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="table[@class='vv']">
    <div class="row">
        <xsl:for-each-group select="tr" group-by="td[1]/text()">
            <xsl:sort/>
            test
        </xsl:for-each-group>
    </div>
</xsl:template>

错误-

enter image description here

只是想验证这是 Saxon 中的一个错误还是 XSLT 3.0 中的工作方式有所改变

最佳答案

IncompatibleClassChangeError 通常意味着 JVM 在运行时加载了一个类,这与编译时的方式不同。也就是说,代码是使用类路径编译的,其中包含与运行时加载的版本不同的某些库类版本。

两个可能的研究理论:

(a) 在这种情况下,从表面上看,所有涉及的类似乎都是 Saxon 类,因此这可能表明您在类路径上有多个版本的 Saxon,并且由于某种原因代码正在从两者加载。

(b) 另一方面,我可以在你的屏幕截图底部看到一条线,它被裁剪了一半,这表明你正在使用启用了字节码生成的 Saxon-EE,这可能表明存在错误在字节码生成中。尝试禁用字节码生成以查看问题是否消失。例如通过调用 Processor.setConfigurationProperty(FeatureKeys.GENERATE_BYTECODE, false)

如果确实是字节码生成错误,请在 http://saxonica.plan.io 上记录,所以我们可以正确地跟踪它。我们几乎肯定需要访问演示问题的样式表。

关于xml - xsl :sort inside for-each-group(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34623667/

相关文章:

c# - 在 C# 中从 Web 检索匿名类型

java - 我可以将字符串文件从 res/values/string.xml 放置到远程主机服务器并从那里读取吗

xml - 如何使用xpath获取基于节点值的属性值

c++ - XML 节点模板——我应该使用 XSLT 吗?

XSLT3 可以在与 expand-text=yes 相同的模板中使用禁用输出转义吗?

java - 如何使用 XdmNode 从标签读取 namespace ?

node.js - NodeJs XSLT 转换

java - Apache Commons XMLConfiguration - 如何通过属性名称获取对象?

xslt - 将大多数下载的项目插入 XMLUI (DSpace 6.2)