Почему я не могу сказатьи покончим с этим? - PullRequest
6 голосов
/ 21 октября 2011

Я думал, что в XML у вас может быть тег с открывающим и закрывающим тегами, а затем, если вам не нужен закрывающий тег, вы можете просто использовать тег с косой чертой в конце.

<!-- needs text/elements within tag so opening and closing tag are needed -->
<myTag>Text here</myTag>
<!-- doesn't need text/elements so doesn't have closing tag -->
<myTag /> 

Я предполагаю, что это только потому, что все решили, что это лучше всего, и теперь это просто особенность XHTML, но почему? Есть ли техническая причина, о которой я не знаю?

Спасибо!

Ответы [ 3 ]

7 голосов
/ 21 октября 2011

Это потому, что XHTML DTD говорит так:)

Только эти элементы могут быть пустыми:

  • площадь
  • база
  • ш
  • цв
  • ч
  • 1020 * IMG * * * Вход тысяча двадцать-одина * * тысяча двадцать-дв
  • ссылка
  • мета
  • 1028 * пары *

Например, link объявлен как:

<!ELEMENT link EMPTY>

, тогда как script и iframe объявлены как:

<!ELEMENT script (#PCDATA)>

и

<!ELEMENT iframe %Flow;>
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
...
1 голос
/ 21 октября 2011

Если бы браузеры рассматривали XHTML как XML, вы были бы правы.Но они относятся к нему как к HTML, где правила разные.

0 голосов
/ 21 октября 2011

Это просто правила HTML. Некоторые элементы, такие как теги script и iframe, всегда имеют закрывающий тег.

Это немного странно, поскольку противоречит принципам работы XML, когда самозакрывающийся тег - это то же самое, что и пустой тег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...