Определение повторяющихся дочерних элементов в DTD

Я пытаюсь создать DTD, и мне было интересно, как разрешить дочерним элементам содержать элементы, которые уже были объявлены в DTD. Вы должны объявить их снова? Например:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE document [
  <!ELEMENT document (author,title,body)>
  <!ELEMENT author (#PCDATA)>
  <!ELEMENT title (#PCDATA)>
  <!ELEMENT body (br*,hr*,img*,table*)>
  <!ELEMENT br EMPTY>
  <!ELEMENT hr EMPTY>
  <!ELEMENT img EMPTY>
  <!ELEMENT table (tr+)>
  <!ELEMENT tr (td+)>
  <!ELEMENT td (#PCDATA)>

<!--hr element--> <!ATTLIST hr width CDATA "0">

<!--img element--> <!ATTLIST img height CDATA "0"> <!ATTLIST img src CDATA #REQUIRED> <!ATTLIST img width CDATA "0">

<!--td element--> <!ATTLIST td width CDATA "0"> ]> <document> <author>My Author</author> <title>My Title Test</title> <body> <hr /> <table> <tr> <td>Would like elements here</td> </tr> </table> </body> </document>

В приведенном выше XML я хотел бы, например, разрешить тегам br, hr, img и table находиться внутри тега td. Должен ли я переопределять эти элементы в DTD?

Я ценю любую помощь и заранее благодарю вас.


person senfo    schedule 11.06.2009    source источник


Ответы (1)


вы должны ссылаться на них в определении <!ELEMENT td>

edit: если вы хотите сохранить проанализированные символьные данные в элементе td вместе с новыми тегами, вы можете определить элемент смешанного содержимого. пример:

<!ELEMENT td (#PCDATA | br? | hr? | img?)>

см. объявления элементов на w3.org

person akf    schedule 11.06.2009
comment
Не могли бы вы уточнить, немного? Элемент td также должен разрешать текст. Я не уверен, как разрешить указанные элементы в дополнение к любому тексту, который я мог бы ввести. - person senfo; 11.06.2009