внутренняя ошибка оценки шаблонного правила xslt - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь объединить набор файлов XML с помощью XSLT на одном из моих серверов и получаю следующую ошибку для набора файлов (не для всех файлов):

 \f0\fs22 \cf2 \cb3 \CocoaLigature0 Writing to file:/opt/Liferay-Bundle/tomcat-7.0.42/temp/temp128140163092620110910826941/OneShot/ParaNumber/cust_Story_u4f9.xml\
URIResolver.resolve href="Story_u4f9.xml" base="file:/opt/Liferay-Bundle/tomcat-7.0.42/temp/temp128140163092620110910826941/OneShot/ParaNumber/RawMap.xslt"\
Building tree for file:/opt/Liferay-Bundle/tomcat-7.0.42/temp/temp128140163092620110910826941/OneShot/ParaNumber/Story_u4f9.xml using class net.sf.saxon.tree.tiny.TinyBuilder\
Tree built in 6.666093ms\
Tree size: 287 nodes, 2003 characters, 388 attributes\
Writing to file:/opt/Liferay-Bundle/tomcat-7.0.42/temp/temp128140163092620110910826941/OneShot/ParaNumber/cust_Story_u4ac.xml\
URIResolver.resolve href="Story_u4ac.xml" base="file:/opt/Liferay-Bundle/tomcat-7.0.42/temp/temp128140163092620110910826941/OneShot/ParaNumber/RawMap.xslt"\
Building tree for file:/opt/Liferay-Bundle/tomcat-7.0.42/temp/temp128140163092620110910826941/OneShot/ParaNumber/Story_u4ac.xml using class net.sf.saxon.tree.tiny.TinyBuilder\
java.lang.RuntimeException: Internal error evaluating template rule  at line 8 in module file:/opt/Liferay-Bundle/tomcat-7.0.42/temp/temp128140163092620110910826941/OneShot/ParaNumber/RawMap.xslt\
    at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:366)\
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)\
    at net.sf.saxon.trans.TextOnlyCopyRuleSet.process(TextOnlyCopyRuleSet.java:65)\
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:433)\
    at net.sf.saxon.Controller.transformDocument(Controller.java:2277)\
    at net.sf.saxon.Controller.transform(Controller.java:1854)\
    at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:579)\
    at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:185)\
    at com.library.hook.action.RunnableDemo.simpleTransformI2W(RunnableDemo.java:768)\
    at com.library.hook.action.IdmlToXHTMLThread.run(IdmlToXHTMLThread.java:369)\
    at java.lang.Thread.run(Thread.java:748)\
Caused by: java.lang.NullPointerException\
    at oracle.xml.parser.v2.NonValidatingParser.resolveNS(NonValidatingParser.java:1803)\
    at oracle.xml.parser.v2.NonValidatingParser.expandNamespace(NonValidatingParser.java:1754)\
    at oracle.xml.parser.v2.NonValidatingParser.parseAttributes(NonValidatingParser.java:1445)\
    at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1274)\
    at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:324)\
    at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:291)\
    at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:207)\
    at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:451)\
    at net.sf.saxon.event.Sender.send(Sender.java:153)\
    at net.sf.saxon.functions.DocumentFn.makeDoc(DocumentFn.java:370)\
    at net.sf.saxon.functions.DocumentFn$DocumentMappingFunction.mapItem(DocumentFn.java:190)\
    at net.sf.saxon.expr.ItemMappingIterator.next(ItemMappingIterator.java:113)\
    at net.sf.saxon.expr.sort.DocumentOrderIterator.<init>(DocumentOrderIterator.java:47)\
    at net.sf.saxon.functions.DocumentFn.call(DocumentFn.java:161)\
    at net.sf.saxon.expr.FunctionCall.iterate(FunctionCall.java:546)\
    at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:278)\
    at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)\
    at net.sf.saxon.expr.instruct.ResultDocument.processInstruction(ResultDocument.java:470)\
    at net.sf.saxon.Configuration.processResultDocument(Configuration.java:2131)\
    at net.sf.saxon.expr.instruct.ResultDocument.process(ResultDocument.java:382)\
    at net.sf.saxon.expr.instruct.ResultDocument.processLeavingTail(ResultDocument.java:368)\
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:653)\
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:149)\
    at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:453)\
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:149)\
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)\
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:311)\
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:149)\
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)\
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:311)\
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:149)\
    at net.sf.saxon.expr.instruct.ResultDocument.processInstruction(ResultDocument.java:470)\
    at net.sf.saxon.Configuration.processResultDocument(Configuration.java:2131)\
    at net.sf.saxon.expr.instruct.ResultDocument.process(ResultDocument.java:382)\
    at net.sf.saxon.expr.instruct.ResultDocument.processLeavingTail(ResultDocument.java:368)\
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:653)\
    at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:711)\
    at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)\
    ... 10 more\

Я пробовал оба document() и collection() методы xslt, которые можно использовать для объединения файлов. Но получаю ту же ошибку.

Основная проблема заключается в том, что эта ошибка возникает только на этом конкретном сервере. когда я запускаю тот же набор файлов на локальном или других серверах, он работает без проблем.

В процессе используются следующие данные:

XSLT 2.0

саксонская 9.7.0-8

Java 1.7.0_95

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 14 мая 2018

Он упал глубоко внутри парсера Oracle XDK (Саксон просто передает плохие новости). К сожалению, этот синтаксический анализатор не является открытым исходным кодом, и я сомневаюсь, что Oracle следит за этим форумом, поэтому технически вы должны подать запрос на поддержку Oracle. На практике ваш лучший путь вперед - это, вероятно, переключиться на другой парсер: либо парсер, встроенный в JDK, либо Apache Xerces.

Я подозреваю, что единственная причина, по которой вы используете синтаксический анализатор XDK, заключается в том, что он находится на пути к классам или присутствует в каталоге "одобренных библиотек".

Вы можете изменить синтаксический анализатор, используемый Saxon при вызове функции document () с использованием метода Processor.setConfigurationProperty(FeatureKeys.SOURCE_PARSER_CLASS, className).

...