我有一些通用 XML 片段需要根据它们使用的上下文(项目)使用不同的实体文件。我不想将它们复制/粘贴到整个地方,复制代码。
XML 实体不会传播到 XIncluded 元素,也无法动态指定位置(这与实体不传播的原因相同)。
根据上下文,将不同实体文件提供给通用 XML 片段的可行方法是什么,该方法适用于所有/大多数 XML 工具?
我有一些通用 XML 片段需要根据它们使用的上下文(项目)使用不同的实体文件。我不想将它们复制/粘贴到整个地方,复制代码。
XML 实体不会传播到 XIncluded 元素,也无法动态指定位置(这与实体不传播的原因相同)。
根据上下文,将不同实体文件提供给通用 XML 片段的可行方法是什么,该方法适用于所有/大多数 XML 工具?
取决于您的处理环境。许多 XML 解析器允许您指定 EntityResolver 或 XmlResolver 作为回调来处理和解析外部实体引用。在此之上,您会发现支持 OASIS 目录的解析器或其他实用程序,它们允许您为 XML 目录文件中的实体引用定义间接寻址。
就个人而言,我不喜欢对这种应用程序使用实体引用,而是使用自定义标记。(有些人更喜欢 XLink/XInclude,但我更喜欢自己动手。)使用 XSLT 处理链接/嵌入非常容易。一个特别的好处是在保持实体引用完整的情况下很难转换 XML,但如果链接使用逻辑(元素级)标记,则很容易保持链接完整。