我想知道是否有扩展DTD的标准方法,或者验证文档的唯一方法是在XML文件中添加所有必要的扩展名。
我有一个插件系统,通常像Linux安装中的软件包一样组织(即插件可能依赖于一个或多个插件,不允许循环):
+----------------------+
+-->| Editor |<--+
| +----------------------+ |
| |
+-----------------+ +-----------------+
| Locale | | Image |
+-----------------+ +-----------------+
^ ^
| |
| +----------------------+ |
+---| GeoMap |---+
+----------------------+
所以,我所拥有的是编辑器插件中的DTD,例如,具有名为 auto-save 的属性的widget标签,如下所示:
<!ELEMENT widget (value|preset|default|state)*>
<!ATTLIST widget id ID #REQUIRED
type NMTOKEN #REQUIRED
auto-save (double | html | int8
| date-us | no | string) "string">
事实上,当我添加语言环境时,我现在希望自动保存属性也支持 locale-date 等类型,这种类型并非特定于美国。
同样,Image插件可能需要添加 image 类型,GeoMap插件可以使用 geo-location 。
所以最后,ATTLIST自动保存应该看起来像这样(显然,顺序无关紧要):
auto-save (double | html | int8 | date-us | no
| string | locale-date | image | geo-location) "string"
即使在XML文件中定义多个DTD(根标签中的xmlns=...
属性),我也不认为你可以这样做,我们可以吗?
现在我可以在editor.dtd中添加类型,但是当你的图形中可能没有这些插件时,定义区域设置,图像和geomap类型显然是错误的...
我能想到的另一个解决方案是使用XSD,但即使使用这种格式,我该如何添加属性和标签的子添加?
答案 0 :(得分:0)
DTD不可扩展。 但是同时,可以使用可扩展的XML模式。