有没有办法扩展用于验证的DTD?

时间:2014-12-02 04:07:35

标签: xml dtd xml-validation xml-dtd

我想知道是否有扩展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,但即使使用这种格式,我该如何添加属性和标签的子添加?

1 个答案:

答案 0 :(得分:0)

DTD不可扩展。 但是同时,可以使用可扩展的XML模式。