我正在尝试在我的计算机上设置 XSLT 2.0 的测试环境。遗憾的是,Intellij Ultimate 和带有 XMLTools 的 Notepad++ 都无法运行此代码片段,而 freeformatter.com 上的在线转换器可以正确打印正确的结果:
<test>aa</test>
这是片段:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes" />
<xsl:template match="/">
<test>
<xsl:analyze-string select="'aa'" regex="b">
<xsl:non-matching-substring>
<xsl:value-of select="." />
</xsl:non-matching-substring>
</xsl:analyze-string>
</test>
</xsl:template>
</xsl:stylesheet>
IntelliJ-IDE 至少提供了失败的原因:
[ERROR]: java.lang.RuntimeException: Nicht unterstütztes XSL-Element "http://www.w3.org/1999/XSL/Transform:analyze-string"
(翻译为“不支持 XSL-ELement”)
我在这里想念什么?
(如您所见,此转换不访问 XML 数据,因此它应该打印每个有效 XML 的预期结果)
根据 https://www.jetbrains.com/help/idea/xpath-and-xslt-support.html,Intellij Idea 支持 XSLT 1.0 和 2.0,但仅当您安装 Saxon-HE 时才支持 2.0(那里的文档)命名为 9.x,但请注意 XSLT 世界已经发展,Saxonica 当前支持的 Saxon 版本是 10、11和 12).
为了更好地支持 Intellij 中当前版本的 XSLT 3.0,您还可以考虑安装该插件 https://plugins.jetbrains.com/plugin/8612-xquery-and-xslt。
有关 Notepad++ 的 XMLTools 插件的更新,我有一个原型,将 SaxonC 12 HE 集成到该插件中,并且能够运行 XSLT 3,请参阅 https://github.com/morbac/xmltools/issues/215#issuecomment- 2527883394.