如何使用saxon将文档类型参数传递给xslt

时间:2014-01-02 14:46:39

标签: xslt saxon

我想用saxon转换xml

,在XSLT中

我添加一个参数,我希望它作为“文档”

<xsl:param name="doc" as="node()*" />

和java

    DOM4JDocumentWrapper documentNode = new DOM4JDocumentWrapper(doc4j, "", config);
    NodeInfo nodeInfo=documentNode.getRoot();
    XsltTransformer tr =   xsltExecutable.load();
    tr.setParameter(idQname, new XdmNode(nodeInfo));

但遇到了这样的错误:

Caused by: net.sf.saxon.trans.XPathException: Cannot convert value class net.sf.saxon.option.dom4j.DOM4JNodeWrapper of type element(Q{}xxx) to class net.sf.saxon.tree.tiny.TinyElementImpl
    at net.sf.saxon.expr.PJConverter$Identity.convert(PJConverter.java:527)

1 个答案:

答案 0 :(得分:0)

看起来好像您正在使用的Saxon配置不了解DOM4J对象模型实现。也就是说,它尚未使用Configuration.registerExternalObjectModel()注册。

对于Saxon-PE和Saxon-EE,默认情况下应该知道,但是对于Saxon-HE,它必须明确注册。因此,我们需要了解您正在使用的Saxon软件版本及其初始化方式。

这个问题对撒克逊人来说非常具体,获得这些问题答案的最佳策略是在saxonica.plan.io的论坛上提问。我们会不时在StackOverflow上检查标记为“saxon”的问题,但我们可能需要几天才会注意到它们,并且我们不会优先考虑它们。