Повторное использование элементов в DTD - PullRequest
3 голосов
/ 02 мая 2011

Я начал работу, где мне дали несколько файлов 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>

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

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

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

0 голосов
/ 02 мая 2011

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

...