【发布时间】: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)