是否对用于创建DominoTree的DOM有任何要求,例如具有namespaceaware或使用级别2的DOM生成器创建



在调用saxon库来处理xquery表达式之前,我们添加了将DOM转换为Domino的代码,这涉及到构建一个xml文档作为输出。对于使用某些DOM构建器创建的DOM,可以看到以下异常:

java.lang.NullPointerException
at net.sf.saxon.om.NameOfNode.equals(NameOfNode.java:177)
at net.sf.saxon.om.SingletonAttributeMap.put(SingletonAttributeMap.java:69)
at net.sf.saxon.om.NodeInfo.attributes(NodeInfo.java:528)
at net.sf.saxon.tree.util.Navigator.copy(Navigator.java:673)
at net.sf.saxon.om.NodeInfo.copy(NodeInfo.java:568)
at net.sf.saxon.tree.util.Navigator.copy(Navigator.java:679)
at net.sf.saxon.om.NodeInfo.copy(NodeInfo.java:568)
at net.sf.saxon.event.ComplexContentOutputter.decompose(ComplexContentOutputter.java:860)
at net.sf.saxon.event.ComplexContentOutputter.append(ComplexContentOutputter.java:656)

原因似乎是node.getLocalName((对于属性类型的节点,对于Domino返回null。如果DOM被转换为Tiny Tree或使用DOMWrapper传递给Saxon,则相同的设置也会起作用。

使用domino的Xquery预期会工作,但抛出了Exception。

您已经在Saxonica支持论坛上提出了这个问题https://saxonica.plan.io/issues/5727

总结:

(a( 无论是使用Saxon中的DOM包装器,还是Domino结构(它添加了额外的索引(,DOM都应该是名称空间感知的,并且应该使用名称空间感知(即2级(接口来构建。

(b( 如果您不遵守该规则,我们就不应该崩溃(所以我们将修复您所观察到的崩溃(,但我们不能保证提供符合XPath的结果。从非名称空间感知DOM到有效XDM实例的映射是未定义和不可预测的,因此XPath处理的结果是未定义的。例如,这可能意味着,当结果被序列化时,它不是格式良好的XML(例如,它可能在元素或属性名称中包含未声明的前缀。

最新更新