Повторное использование элементов в 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-image и other-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>

person Cubed Eye    schedule 02.05.2011    source источник


Ответы (2)


Я думаю, что это отличная идея - повторно использовать такие элементы. Он сохраняет XML простым и менее подробным.

В этом случае я думаю, что было бы излишним создавать новый элемент только потому, что ему не нужно использовать необязательный атрибут.

person Daniel Haley    schedule 02.05.2011

В этом DTD атрибут подписи не требуется. Атрибут источника -.

person Don Roby    schedule 02.05.2011
comment
Да, я знаю. Мне просто было интересно, стоит ли повторно использовать подобные элементы с подразумеваемым атрибутом подписи, даже если other-image не нуждается / не требует, чтобы он когда-либо работал с остальной системой. Или было бы лучше / безопаснее просто сделать два разных элемента, см. Редактировать - person Cubed Eye; 02.05.2011
comment
Ok. В таком случае я согласен с другим ответом. Нет, все нормально. - person Don Roby; 02.05.2011