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