You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XSLT中检测Saxon引擎版本以适配.NET库调用?

检测Saxon版本的实用方案

方法1:使用Saxon内置扩展函数 saxon:product-version()

Saxon 9.9和10版本均支持这个扩展函数,你需要先在XSLT根节点声明Saxon的命名空间:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:saxon="http://saxon.sf.net/"
                version="2.0">

之后就能在模板或变量中直接调用该函数获取完整版本字符串:

<xsl:variable name="saxon-version" select="saxon:product-version()"/>

拿到版本号后,用字符串处理函数提取主版本号,再编写条件逻辑适配不同版本的.NET调用方式:

<!-- 提取主版本号(比如从"9.9.1.7"中得到9) -->
<xsl:variable name="saxon-major" select="number(substring-before($saxon-version, '.'))"/>

<xsl:choose>
  <xsl:when test="$saxon-major >= 10">
    <!-- 这里写Saxon 10及以上版本调用.NET库的逻辑 -->
  </xsl:when>
  <xsl:when test="$saxon-major = 9">
    <!-- 这里写Saxon 9.9版本调用.NET库的逻辑 -->
  </xsl:when>
</xsl:choose>

方法2:通过系统属性间接获取

如果因环境限制无法使用扩展函数,可尝试读取Saxon暴露的系统属性:

  • 针对.NET环境的Saxon,使用system-property('net.sf.saxon.productVersion')
  • 通用场景也可尝试system-property('saxon:product-version')(需提前声明Saxon命名空间)

示例代码:

<xsl:variable name="saxon-version" select="system-property('net.sf.saxon.productVersion')"/>

注意点

  • 确认第三方应用Application X的Saxon实例启用了扩展支持(既然它本身基于Saxon开发,大概率没问题)
  • 版本字符串格式可能为9.9.1.7或10.6这类,提取主版本时注意兼容不同格式

内容的提问来源于stack exchange,提问作者Zor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:22:55