撒克逊人找不到包裹

Saxon can't find package

我在 Saxon 9.8 中使用包时遇到了一些困难。 Saxon 找不到我要使用的包并在编译时失败。

从命令行使用 -lib 选项时,我收到以下错误消息:

java.lang.NullPointerException
        at net.sf.saxon.style.PackageVersion.<init>(PackageVersion.java:71)
        at net.sf.saxon.trans.packages.VersionedPackageName.<init>(VersionedPackageName.java:29)
        at net.sf.saxon.trans.packages.PackageInspector.getNameAndVersion(PackageInspector.java:78)
        at et.sf.saxon.trans.packages.PackageInspector.getPackageDetails(PackageInspector.java:91)
        at net.sf.saxon.trans.packages.PackageLibrary.<init>(PackageLibrary.java:96)
        at net.sf.saxon.Transform.doTransform(Transform.java:404)
        at net.sf.saxon.Transform.main(Transform.java:81) Fatal error during transformation: java.lang.NullPointerException:  (no message)

在带有 Saxon 9.8 附加组件的 oXygen 19 中使用 -lib 选项时,我收到以下消息:

Nom du moteur: Saxon-EE 9.8.0.4 (External)
Gravité: fatal
Description: Cannot find package img_pkg (version *)
Emplacement de début: 7:52

当我使用配置文件声明包时,我在 oXygen 中收到完全相同的错误消息。

我很确定文件路径没有问题。由于在我进入 oXygen 的错误消息中,包版本似乎无法识别,我认为这可能是语法问题,但我找不到它的来源。

这是测试我的包裹:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:package name="img_pkg" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:img="https://www.ephe.fr/annuaire/colin-brisson"
    exclude-result-prefixes="xs img" version="1.0">

    <xsl:function name="img:test" visibility="final" as="xs:string">
       <xsl:value-of select="'test ok'"/>
    </xsl:function>

</xsl:package>

这是我的测试样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:img="https://www.ephe.fr/annuaire/colin-brisson" exclude-result-prefixes="xs"
    version="3.0">

    <xsl:use-package version="1.0" name="img_pkg"/>

    <xsl:template name="xsl:initial-template">

        <xsl:message>
            <xsl:value-of select="img:test()"/>
        </xsl:message>

    </xsl:template>

</xsl:stylesheet>

非常感谢!

我认为命令行中的 NullPointerException 是由于错误 3373

https://saxonica.plan.io/issues/3373

尽管在您的情况下,根本原因与错误条目中的略有不同,但这是缺少 package-version 属性。这在 9.8.0.4 中已修复,但从堆栈跟踪中的行号来看,我认为您使用的是较早的维护版本。

oXygen 中的问题可能完全不同,但它可能又与缺少@package-version 有关。