【问题标题】:I/O error reported by XML parser processing file when running XSLT (Saxon PE 9.8.0.4J)运行 XSLT (Saxon PE 9.8.0.4J) 时 XML 解析器处理文件报告的 I/O 错误
【发布时间】:2021-02-18 17:28:53
【问题描述】:

我们正在开始从 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 目录文件作为示例。我尝试使用没有<group> 元素和带有指定xml:base 属性的<group> 元素的JATS 1.2 目录。无论哪种方式,我都得到了相同的结果。

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

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

【问题讨论】:

  • 该错误似乎来自处理 XML 输入的 XML 解析器,我不确定为什么任何 xsl:output 更改都会影响它。那么最小的 XML 文档示例看起来如何,它的 DOCTYPE 声明看起来如何?文件/jrnls/AN/v000n000/59613/JATS-journalpublishing-oasis-article1-mathml3.dtd 或者至少是它的DTD 中的输入是否引用了一个名为JATS-journalpublishing-oasis-article1-mathml3.dtd 的文件,但是您的目录应该告诉XML 解析器在与发生错误的位置不同的位置找到它?您可以使用-t 运行以获取更详细的错误消息吗?
  • 明确地说,我不认为对 xsl:output 的更改对我收到的错误有任何影响,但我认为我应该包含该信息。
  • 当我使用-t 运行命令时,得到的输出如下:Saxon-PE 9.8.0.4J from SaxonicaJava version 1.8.0_272Stylesheet compilation time: 87.553897msProcessing file:/jrnls/AN/v000n000/59613/59613.tmpUsing parser org.apache.xml.resolver.tools.ResolvingXMLReaderBuilding tree for file:/jrnls/AN/v000n000/59613/59613.tmp using class net.sf.saxon.tree.tiny.TinyBuilderI/O error reported by XML parser processing file:/jrnls/AN/v000n000/59613/59613.tmp: /jrnls/AN/v000n000/59613/JATS-journalpublishing-oasis-article1-mathml3.dtd (No such file or directory)

标签: xslt xslt-2.0 saxon


【解决方案1】:

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

在该页面的第一个脚注中,作者包含了一个用于解析带有目录的 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.

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多