运行 XSLT (Saxon PE 9.8.0.4J) 时 XML 解析器处理文件报告的 I/O 错误

问题描述

我们正在开始从 NLM Journalpublishing 3.0 DTD 的轻微修改版本迁移到 JATS v1.2 DTD 的轻微修改版本,以便我们进行内部编辑和处理。我一直致力于我们的编辑和文档处理工具的初始设置和测试。我们有 4 个 XSLT 转换,用于生产过程的各个部分。我们使用 Saxon PE 9.8.0.4J 在 Linux 服务器上运行我们的转换。

我对我正在测试的第一个 XSLT 所做的唯一更改是更新 <xsl-output> 元素上的 doctype-system 和 doctype-public 属性

当我运行我们的命令时:ng net.sf.saxon.Transform -xsl:/develop/lib/code/verify/verify.xsl -s:/jrnls/AN/v000n000/59613/59613.tmp -o:/jrnls/AN/v000n000/59613/59613.xml -catalog:/develop/lib/code/saxon_JATS-1.2/catalog.ucpj-jats.xml -config:/opt/SaxonPE9-8-0-4J/ UCPJconfig.xml ms-directory=/jrnls/AN/v000n000/59613

我收到此错误XML 解析器处理文件报告的 I/O 错误:/jrnls/AN/v000n000/59613/59613.tmp:/jrnls/AN/v000n000/59613/JATS-journalpublishing-oasis- article1-mathml3.dtd(没有那个文件或目录)

我们使用几乎相同的命令行来处理 Journalpublishing 3.0 DTD 中的当前文件,但使用不同的目录文件。我们在处理当前文件方面没有问题。

在设置 JATS 1.2 目录文件时,我以我们的 Journalpublishing 3.0 目录文件为例。我尝试使用 JATS 1.2 目录,既没有 <group> 元素,也有 <group> 元素,指定了 xml:base 属性。无论哪种方式,我都得到了相同的结果。

我确实在 Oxygen 中设置了一个框架来测试这个 XSLT,它按预期工作。

任何人都可以提出任何解决此问题的方法吗?任何建议将不胜感激。

解决方法

我在谷歌上搜索了“xerces resolver.jar”,结果之一是到了 Apache XML 项目解析器概述页面 (https://xerces.apache.org/xml-commons/components/resolver/)。从那里我转到了“XML 实体和 URI 解析器”({{3} }).

在该页面的第一个脚注中,作者包含了一个用于解析带有目录的 XML 文件的命令行:

$ java org.apache.xml.resolver.apps.xparse -d 2 -c catalog.xml example.xml

我修改后在我们的服务器上运行:

% ng org.apache.xml.resolver.apps.xparse -d 2 
  -c /develop/lib/code/saxon_JATS-1.2/catalog.ucpj-jats.xml 
  /jrnls/AN/v000n000/59613/59613.xml

我得到了这个输出:

Attempting validating,namespace-aware parse
Loading catalog: /develop/lib/code/saxon_JATS-1.2/catalog.ucpj-jats.xml
Resolved public: -//NLM//DTD JATS (Z39.96) Journal Publishing DTD with OASIS Tables with MathML3 v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-journalpublishing-oasis-article1-mathml3.dtd
Resolved public: -//NLM//DTD JATS (Z39.96) Journal Publishing DTD with OASIS Tables DTD-Specific Modules v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-journalpub-oasis-custom-modules1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS MathML 3.0 Modules v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-mathml3-modules1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Module of Modules v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-modules1.ent
Resolved public: -//NLM//DTD JATS ALI Namespace Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-ali-namespace1.ent
Resolved public: -//NLM//DTD JATS OASIS Table Namespace Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-oasis-namespace1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Common Attributes (for all elements) v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-common-atts1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) Journal Publishing DTD with OASIS Tables Customize Classes v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-journalpub-oasis-custom-classes1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) Default Element Classes Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-default-classes1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) Journal Publishing DTD Customize Mixes Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-journalpubcustom-mixes1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) Default Element Mixes Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-default-mixes1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) Journal Publishing DTD Customize Content and Attributes Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-journalpubcustom-models1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Common (Shared) Elements Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-common1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Journal Article Metadata Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-articlemeta1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Back Matter Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-backmatter1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Display Class Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-display1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Formatting Element Classes v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-format1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Funding Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-funding1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Journal Metadata Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-journalmeta1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Link Class Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-link1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite List Class Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-list1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Math Class Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-math1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) NLM Citation v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-nlmcitation1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) Namespaced OASIS XML Table Setup Module v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-oasis-tablesetup1.ent
Resolved public: -//OASIS//DTD XML Exchange Table Model 19990315//EN
        file:/develop/lib/code/saxon_JATS-1.2/oasis-exchange.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Paragraph-Like Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-para1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Subject Phrase Class Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-phrase1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Bibliographic Reference (Citation) Class Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-references1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Related Object Element v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-related-object1.ent
Resolved public: -//NLM//DTD JATS (Z39.96) JATS DTD Suite Section Class Elements v1.2 20190208//EN
        file:/develop/lib/code/saxon_JATS-1.2/JATS-section1.ent
java.io.FileNotFoundException: /develop/lib/code/saxon_JATS-1.2/BITS-embedded-index2.ent (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
        at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:623)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1304)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1240)
        at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.startPE(XMLDTDScannerImpl.java:740)
        at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.skipSeparator(XMLDTDScannerImpl.java:2109)
        at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDecls(XMLDTDScannerImpl.java:2072)
        at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDTDExternalSubset(XMLDTDScannerImpl.java:307)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1174)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1045)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:959)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1140)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:655)
        at org.apache.xml.resolver.tools.ResolvingParser.parse(ResolvingParser.java:183)
        at org.apache.xml.resolver.apps.xparse.main(xparse.java:186)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.martiansoftware.nailgun.NGSession.run(NGSession.java:278)
Parse succeeded (0.31) with no errors and no warnings.

一旦我恢复了丢失的文件并将其添加到我们的目录文件中,我们的命令行就会按预期工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...