重用DTD中的元素

时间:2011-05-02 00:20:23

标签: xml dtd

我已经开始了一项工作,我获得了一些XML文件和一个DTD。它们工作正常,但我注意到在DTD中它们正在重用这样的元素。

DTD:

<!ELEMENT image EMPTY>
    <!ATTLIST image 
        source CDATA #REQUIRED
        signature (true|false|1|0) "false" 
    >

并且在xml中,图像元素出现在两个地方,但只有一个地方需要“签名”属性,而在另一种情况下则无关紧要。

XML:

<root>
  <element-with-optional-signature-image>
     <image source="1.jpg" singature="true" />
     <image source="2.jpg" />
  </element-with-optional-signature-image>
  <other>
     <image source="3.jpg" />
  </other>
</root>

我以前从未见过像这样写过的DTD,只是想知道这种做法是常见的还是非常糟糕的做法?我会创建两个不同的元素element-imageother-image

编辑 -

上述内容是否像DTD一样被接受:

<!ELEMENT element-image EMPTY>
    <!ATTLIST element-image 
        source CDATA #REQUIRED
        signature (true|false|1|0) "false" 
    >

<!ELEMENT other-image EMPTY>
    <!ATTLIST image 
        source CDATA #REQUIRED
    >

使用这样的XML:

<root>
  <element-with-optional-signature-image>
     <element-image source="1.jpg" singature="true" />
     <element-image source="2.jpg" />
  </element-with-optional-signature-image>
  <other>
     <other-image source="3.jpg" />
  </other>
</root>

2 个答案:

答案 0 :(得分:3)

我认为重用这样的元素是一个好主意。它使XML保持简单且不那么冗长。

在这个例子中,我认为创建一个新元素仅仅因为它不需要使用可选属性就太过分了。

答案 1 :(得分:0)

在此DTD中,不需要签名属性。 source属性是。