X包括在命令行 Saxon 上无法正常工作,但可以与 oXygen 一起使用

问题描述 投票:0回答:1

我有一些抄写手稿的 XML 文件,这些手稿来自这些手稿所在书籍的共享描述。它在我的 XML 中通过三个包含语句进行格式化,如下所示:

<xi:include href="../Witness_Descriptions/Trinity_R_3_20.xml" xpointer="publication" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="../Witness_Descriptions/Trinity_R_3_20.xml" xpointer="Trinity_R_3_20" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="../Witness_Descriptions/Minor_Poems_Vol_II.xml" xpointer="MacCracken" xmlns:xi="http://www.w3.org/2001/XInclude"/>

当我在 oXygen 中运行 xslt 将其转换为 html(使用 oXygen 的内置 Saxon-PE 10.6 Transformer)时,它工作正常。但是,我需要能够在整个文档语料库之间生成比较,我使用 saxon-he 9 转换器和以下命令行:

java -Xms128m -Xmx1024m -XX:+UseCompressedOops -cp saxon9he.jar net.sf.saxon.Query -t -xi -q:test.xq -o:1698815174.72894737321461.xml line=l.1 zone=EETS.ME.I marginalia=text collection=/home/matrygg/minorworksoflydgate.net/XML/Mumming_Eltham

如果 Mumming_Eltham 目录中的 XML 文件没有任何包含内容,则效果很好。如果我这样做 - 正如我已经开始按照上面提到的那样 - 我会收到以下错误:

Warning: org.xml.sax.SAXParseException; systemId:
  file:/home/matrygg/minorworksoflydgate.net/XML/Mumming_Eltham/Trinity_College_R_3_20_Mumming_Eltham.xml; lineNumber: 22; columnNumber: 142; Include operation failed, reverting to fallback. Resource error reading file as XML (href='../Witness_Descriptions/Trinity_R_3_20.xml'). Reason: XPointer resolution unsuccessful.
Error on line 22 column 142 of Trinity_College_R_3_20_Mumming_Eltham.xml:
  SXXP0003: Error reported by XML parser: An include with href
  '../Witness_Descriptions/Trinity_R_3_20.xml'failed, and no fallback element was found.
Query failed with dynamic error: org.xml.sax.SAXParseException; systemId: file:/home/USERNAME/minorworksoflydgate.net/XML/Mumming_Eltham/Trinity_College_R_3_20_Mumming_Eltham.xml; lineNumber: 22; columnNumber: 142; An include with href '../Witness_Descriptions/Trinity_R_3_20.xml'failed, and no fallback element was found.

对我来说很明显,问题在于它不处理相对路径,但我找不到任何如何在命令行界面或 xml 中解决此问题的示例,只能通过 xsl 中的 fn:resolve-uri 来解决。有没有办法在命令行执行此操作,或者我是否必须为我可能想要包含的所有内容输入绝对 URI?我已经检查过,这些文件存在于预期的位置,并且应该具有允许解析它们的权限。

xml saxon oxygenxml xinclude
1个回答
0
投票

Saxon-HE 9 中的 XInclude 问题是由

xi:include
组件中提供的相对路径引起的。与 oXygen 中的内置 Saxon-PE 变压器相比,Saxon-HE 9 似乎不支持 XInclude 的相对路径。要解决此问题,请在
xi:include
元素中使用绝对 URI。您可以通过将相对路径替换为格式为
file:///path/to/your/file
的整个文件 URI 来实现此目的。

<xi:include href="file:///home/matrygg/minorworksoflydgate.net/XML/Witness_Descriptions/Trinity_R_3_20.xml" xpointer="publication" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="file:///home/matrygg/minorworksoflydgate.net/XML/Witness_Descriptions/Trinity_R_3_20.xml" xpointer="Trinity_R_3_20" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="file:///home/matrygg/minorworksoflydgate.net/XML/Witness_Descriptions/Minor_Poems_Vol_II.xml" xpointer="MacCracken" xmlns:xi="http://www.w3.org/2001/XInclude"/>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.