2011-06-21 25 views
10

Mój kolega naprawdę nie zna lub nie rozumie html. Jej zadaniem jest wprowadzanie informacji do CMS i zauważyłem, że zamyka ona swoje tagi <hr /> takie jak ta <hr></hr>.Czy element <hr /> może zawierać znacznik zamykający?

Miałem Google, ale nie mogę znaleźć nigdzie, że mówi, że to nie jest dozwolone lub może powodować problemy. Wiem, że to ma być <hr />, ale czy warto jej o tym mówić, czy też jest to niepotrzebny, ale ważny marż?

NB Dosypem dla naszej witryny jest XHTML 1.0 Transitional, jeśli to ma znaczenie.

EDIT

@Jeff miał dobry pomysł na temat walidacji. Użyłem poniższy kod i widocznie ta jest zgodna z XHTML 1.0 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <hr></hr> 
    </body> 
</html> 
+3

próbowałeś sprawdzania go? http://validator.w3.org/ – Jeff

+0

Szczerze mówiąc, cała strona to bałagan i daleki jest od sprawdzania poprawności. Najbardziej martwi to "


". – MrMisterMan

Odpowiedz

26

OK, <hr></hr> jest rzeczywiście zgodna z XHTML 1.0, too.

Więc dla XHTML 1.0:

  • <hr /> jest ważny
  • <hr></hr> jest ważny
  • <hr> jest nie ważny

... HTML 4.0:

  • <hr /> jest ważny
  • <hr></hr> jest nie ważny
  • <hr> jest ważny

dlatego najlepszym rozwiązaniem jest użycie <hr />, który jest zawsze aktualne.

+2

-1 '


' ___is___ [valid XHTML 1.0] (http://validator.w3.org/check). – kba

+0

masz rację, edytuj. – Tsar

9

HTML 4 says:

tag Start:wymagane, tag Koniec:zabronione

I jak XHTML w zasadzie oznacza, że ​​znaczniki HTML trzeba mieć znacznik zamykający, Powiedziałbym, że to jedyny format, który należy wziąć pod uwagę.

Jak mówią inni, <hr></hr> jest prawidłowym XHTML (they even use it as example), ale ze względu na kompatybilność nie użyłbym go.

+0

Odpowiedź SGML-y jest taka, że ​​'


' jest równoważne '
' - istnieje całe rozszerzenie WWW do deklaracji SGML, które dodało klauzulę "NETENABL IMMEDNET". Praktyczne pytanie brzmi, czy twoja docelowa przeglądarka cię zrozumie. Niestety, to nie ma nic wspólnego z SGMLem :-( –

+0

Używałbym tylko '


', ale ponieważ używamy xttml doctype i jeśli będę kontynuował nitpicking na jej html może ona naprawdę się wkurzyła ze mną to czy warto to zmienić? – MrMisterMan

+0

@MrMisterMan: Nie wiem, bo po pustych elementach z tagiem początkowym i końcowym po prostu powiększa się rozmiar dokumentu (choć może to nie być zbyt wiele) –

3

<hr /> jest skrótem tylko dla <hr></hr>; oba są dopuszczalne w dokumentach XHTML. Jednak nie są akceptowane w dokumentach HTML, gdzie zamiast nich należy użyć <hr>, co z kolei jest nieważne w XHTML.

0

O ile mi wiadomo, nie ma zamkniętego znacznika hr. Znacznik jest całkowicie samozamykający, a definicja typu dokumentu odzwierciedli to.

1

Numer <hr /> nie powinien zawierać znacznika zamykającego.

Jest nieprawidłowy HTML.

Jest to jest poprawny XML i dlatego technicznie jest poprawny xhtml, ale nadal nie powinieneś go używać, nawet jeśli używasz xhtml.

Dzieje się tak dlatego, że wszystkie przeglądarki używają parsera HTML nawet przy renderowaniu kodu XHTML, dlatego zamykanie tagu </hr> jest postrzegane jako błąd. Niektóre przeglądarki mogą nawet błędnie interpretować je jako dodatkowy element <hr>.

Jedynym sposobem na kompatybilność z różnymi przeglądarkami jest <hr> (tj. Zwykły HTML) lub <hr />, jeśli chcesz mieć poprawny dokument xhtml.

+0

O ile nie został wysłany jako 'application/xhtml + xml' jako rzeczywisty XML, w którym to przypadku przeglądarka używa parsera XML – timw4mail

+0

@ timw4mail - * niektóre * przeglądarki mogą, ale nie wszystkie, szczególnie starsze wersje IE. – Spudley

+0

IE nie ma parsera XML, który renderuje XHTML. t wie, co z tym zrobić, więc próbuje ci go pobrać: – timw4mail

0

Ponieważ jest to pusty element, nie ma sensu otwieranie i zamykanie znaczników.

Jednak XML wymaga zamknięcia wszystkich znaczników, stąd formularz <hr />.

Przypuszczam, że w HTML, a nie XML, <hr></hr> jest ważny, ale niepotrzebny.

+0

Czy masz na myśli * Przypuszczam, że w XML, a nie HTML *? –

+0

Cóż, myślę, że prawdopodobnie jest to ważne tak czy inaczej, ale jest też głupie. – timw4mail

+0

Nie, '


' nie jest poprawna w HTML 4, ale czy nie jest poprawna w XML? Elementy XML składają się z tagów początkowych i końcowych w postaci ''. –

Powiązane problemy