可能的循环包依赖 - XSLT 3.0

时间:2015-12-15 00:58:49

标签: xml xslt saxon xslt-3.0

我第一次尝试xsl:package但在命令行上出错 -

xml(未真正使用) -

<woot/>

package.xsl -

<?xml version="1.0" encoding="UTF-8"?>
<xsl:package name="http://example.org/package.xsl"
    package-version="1.0"  version="3.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:f="http://example.org/package">

    <xsl:function name="f:woot" visibility="public">
        <xsl:value-of select="'DANGGGG'"/>
    </xsl:function>

</xsl:package>

包use.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:package name="http://example.org/package-use.xsl"
    package-version="1.0"  version="3.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:f="http://example.org/package">

    <xsl:use-package name="http://example.org/package.xsl" package-version="1.0"/>

    <xsl:template match="/">
        <xsl:variable name="output-text" select="f:woot()"/>
        <xsl:value-of select="$output-text"/>

    </xsl:template>
</xsl:package>

在命令行上(使用saxon 9.7)

> java -jar saxon9ee.jar woot.xml package-use.xsl;package.xsl

返回 -

可能的循环包依赖

我尝试使用Saxon 9.6对Oxygen XML进行类似的转换,并获得了java.lang.NullPointerException。

1 个答案:

答案 0 :(得分:1)

我在这里记录了一个撒克逊人的错误:

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

我担心在发布补丁之前,除了从s9api API而不是从命令行运行转换之外,没有其他解决方法。

当你超越这个时,你会遇到另一个问题:你的包需要声明它使用的模式。添加空<xsl:mode/>声明是最低限度的修复。