是否可以动态指定外部实体文件的位置?

时间:2013-07-17 23:50:20

标签: xml xml-parsing doctype

我有一些通用的XML片段需要根据他们使用的上下文(项目)使用不同的实体文件。我不想将它们复制/粘贴到所有地方,复制代码。

XML实体不会传播到XIncluded元素,也不可能动态指定位置(由于实体不传播的原因,它不会起作用)。

根据适用于所有/大多数XML工具的上下文,将不同实体文件提供给通用XML片段的可行方法是什么?

1 个答案:

答案 0 :(得分:1)

取决于您的处理环境。许多XML解析器允许您指定EntityResolver或XmlResolver作为回调来处理和解析外部实体引用。除此之外,您还可以找到支持OASIS目录的解析器或其他实用程序,它们允许您在XML目录文件中定义实体引用的间接。

就个人而言,我不想在这种应用程序中使用实体引用,而是使用自定义标记。 (有些人更喜欢XLink / XInclude,但我更愿意自己动手​​。)然后使用XSLT处理链接/转换非常容易。一个特别的好处是,在保持实体引用完整的情况下很难转换XML,但如果链接使用逻辑(元素级别)标记,则很容易保持链接完整。