Какие элементы HTML должны иметь не <body>родительские элементы? - PullRequest
3 голосов
/ 23 августа 2011

Я ищу список HTML-элементов, у которых должны быть родительские элементы (кроме <body>), чтобы они были наиболее разумными.

Например, элемент <tr> может быть одним из таких элементов, поскольку он должен находиться внутри элемента <tbody> или <table>. Элемент <div> не был бы таким элементом, потому что он совершенно нормально находится внутри элемента <body> напрямую.

Кто-нибудь знает лучший способ получить такой список? Я нашел этот список в качестве отправной точки, но это сэкономило бы мне некоторое время, если бы был лучший способ, чем я проверять каждый из них в отдельности.

1 Ответ

3 голосов
/ 23 августа 2011

Для версий HTML от HTML 2.0 до HTML 4.01 и XHTML 1.x см. Их DTD (которые связаны с применимой спецификацией на сайте W3C). (Предыдущие версии HTML не были так формализованы, чтобы иметь DTD. Более поздние версии XHTML двигались к схеме. HTML 5 определяется таким образом, чтобы не иметь официальной машиночитаемой спецификации, но я думаю, что сторонние схемы там).

Найдите определение элемента body:

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->

Разверните ссылки (%body; в этом примере).

Это даст вам список элементов, которые могут быть потомками элемента body.

Затем просто вычтите этот список из списка всех элементов в этой версии HTML, и вы получите элементы, которые либо должны быть потомками элемента, отличного от тела, либо являются корневым элементом (<html>).

...