我们使用 XML 来定义一个模式来控制可以在图表工具中显示的内容。模式文件指定可以在图表上放置哪些类型的对象,如何将它们链接在一起,以及这些对象具有哪些属性(即,在编辑器中出现哪些可设置的属性)。
当需要一种新的图表时,会编写一个新的模式,并根据 .xsd 进行验证。为了使模式文件更加模块化和更易于维护,我们使用<!ENTITY>
声明来包含单独的文件。一起属于特定图表元素但可能出现在模式中的多个位置的属性列表等被写入单独的 XML 文件,然后包含在相关位置。说:
<!-- Nameing etc. just as an example -->
<!ENTITY CommonProerties1 SYSTEM "file:../CommonProperties1.xml">
<!ENTITY CommonProerties2 SYSTEM "file:../CommonProperties2.xml">
然后在架构中的某处:
<Node shape="Square">
&CommonProperties1;
<!-- Specific properties go here -->
</Node>
这可以防止大量复制粘贴的东西,使维护变得困难,并让公共属性也可以与多个模式共享。
问题是现在,一些通用属性也有基本元素,例如标志和枚举组等。我想让每个文件(例如“CommonProperties1.xml”)能够包含来自另一个基本集,例如作为“CommonEnums.xml”,但我认为使用 !ENTITY 声明是不可能的。
您不能在 !DOCTYPE 标头之外声明 !ENTITY ,如果您添加标头,那么它会使顶级 XML 文件无效,因为它通过文件获得标头声明 1.2。
有没有人尝试过做类似的事情,你做了什么来解决/解决问题?我错过了更好的选择吗?