是否可以从“传递”目录创建回调 xinclude 语句?

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

我有一个通用 XML,我想对其进行区域化,同时保持跨区域的整体结构相同。假设区域特定部分位于通用 xml 目录的相应命名的同级目录中。在我的非简化情况下,特定于区域的包含本身位于子包含中(例如 Snippet1_1_2.xml 等),但我认为这不会产生根本区别,因为 xinclude 原则上能够解析递归包含。

<!-- GenericMasterConfig.xml -->
<GenericMasterConfig>
  <xi:include href="Snippet1.xml"/>
  <xi:include href="Snippet2.xml"/>
  <xi:include href="../&RegionSpecificIncludeDir;/RegionSpecific_Snippet3.xml">
    <xi:fallback>This region has no snippet 3!</xi:fallback>
  </xi:include>
  <xi:include href="Snippet4.xml"/>
  <!-- etc. -->
</GenericMasterConfig>

<!-- RegionSpecificMasterConfig.xml (omitting entity block details) -->
<!-- ... -->
<!ENTITY RegionSpecificIncludeDir "MyRegion"> <!-- alternative? -->
<!-- ... -->
<RegionSpecificMasterConfig>
  <xi:include href="../generic/GenericMasterConfig.xml"/>
</RegionSpecificMasterConfig>

<!-- MyRegion/RegionSpecific_Snippet3.xml -->
<SubConfig>
  <xi:include href="../generic/Snippet_3_1.xml"/>
  <xi:include href="RegionSpecificSnippet_3_2.xml"/>
  <xi:include href="../generic/Snippet_3_3.xml"/>
<SubConfig>

我没有得到基于(顶级)区域特定文件中的实体的第一个想法,xmllint --xinclude 给了我“解析器错误:实体'RegionSpecificIncludeDir'未定义”。

有什么建议吗?

编辑:我想这取决于 xinclude 是否首先完全解析包含的文件,或者以复制粘贴的方式“包含”它,然后继续解析完整的文档。

xml xinclude
1个回答
0
投票

如果其他人也遇到同样的问题: 我的 XML 包含一些内部配置处理器的“指令”。我创建了一个带有可选参数(例如回调包含目录)的“包含指令”作为解决方法,因为我无法让此机制仅与 XML、实体和 xinclude 一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.