gpt4 book ai didi

java - 解析 XSL 时 Saxon 中的 NullPointerException

转载 作者:行者123 更新时间:2023-11-30 03:36:49 24 4
gpt4 key购买 nike

我使用的是 Saxon PE 9.4 版本。我在解析 XSL 时经常遇到问题,但问题并不一致。有时它来,有时它不来。以下是堆栈跟踪:

SEVERE: java.lang.NullPointerException
at net.sf.saxon.expr.instruct.Bindery.getGlobalVariableValue(Bindery.java:264)
at net.sf.saxon.expr.instruct.GlobalParam.evaluateVariable(GlobalParam.java:47)
at net.sf.saxon.expr.VariableReference.evaluateVariable(VariableReference.java:488)
at net.sf.saxon.expr.VariableReference.iterate(VariableReference.java:441)
at net.sf.saxon.expr.Atomizer.iterate(Atomizer.java:230)
at net.sf.saxon.expr.AtomicSequenceConverter.iterate(AtomicSequenceConverter.java:281)
at net.sf.saxon.expr.CardinalityChecker.evaluateItem(CardinalityChecker.java:249)
at net.sf.saxon.expr.ItemChecker.evaluateItem(ItemChecker.java:178)
at net.sf.saxon.expr.parser.ExpressionTool.evaluate(ExpressionTool.java:320)
at net.sf.saxon.expr.parser.ExpressionTool.lazyEvaluate(ExpressionTool.java:434)
at com.saxonica.expr.JavaExtensionFunctionCall.iterate(JavaExtensionFunctionCall.java:275)
at net.sf.saxon.expr.Expression.evaluateItem(Expression.java:411)
at net.sf.saxon.expr.AtomicSequenceConverter.evaluateItem(AtomicSequenceConverter.java:325)
at net.sf.saxon.expr.instruct.ValueOf.evaluateItem(ValueOf.java:273)
at net.sf.saxon.expr.instruct.SimpleNodeConstructor.iterate(SimpleNodeConstructor.java:258)
at net.sf.saxon.expr.instruct.DocumentInstr.evaluateItem(DocumentInstr.java:302)
at net.sf.saxon.expr.Atomizer.evaluateItem(Atomizer.java:240)
at net.sf.saxon.expr.CastExpression.evaluateItem(CastExpression.java:320)
at net.sf.saxon.expr.ValueComparison.effectiveBooleanValue(ValueComparison.java:682)
at net.sf.saxon.expr.instruct.Choose.processLeavingTail(Choose.java:789)
at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:212)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1034)
at net.sf.saxon.Controller.transformDocument(Controller.java:1959)
at net.sf.saxon.Controller.transform(Controller.java:1805)
at dyngrammar.transform.TransformXSL.parseXSLT(TransformXSL.java:320)

使用的XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:request="java:common.RequestSearchCommand" exclude-result-prefixes="request">
<xsl:output omit-xml-declaration="yes" method="xml" indent="yes"/>
<xsl:param name="decodeFlag"/>
<xsl:param name="requestString"/>
<xsl:variable name="segmentName">ABC</xsl:variable>
<xsl:variable name="searchBlbContent">(CU0 ##)|(AMIS ##)</xsl:variable>
<xsl:template match="/">
<xsl:variable name="matchFlag">
<xsl:value-of select="request:searchPattren($requestString, $segmentName, $searchBlbContent, $decodeFlag)" />
</xsl:variable>
<xsl:choose>
<xsl:when test="$matchFlag = 'true'">
<xsl:copy-of select="/*" />
</xsl:when>
<xsl:otherwise>
<ABC></ABC>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

请建议我如何解决这个问题。

最佳答案

郑重声明,根据给出的信息,我认为导致此问题的原因很可能是使用 JAXP Transformer 对象在不同线程中同时执行多个转换,这是不允许的。

关于java - 解析 XSL 时 Saxon 中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27701124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com