디자인 결정-왜 ​​<p>없이 </ p> 생성합니까?


14

tl; dr

html을 생성하는 널리 사용되는 일부 프로그램은 브라우저가 단락을 올바르게 닫는다 고 가정 할 때 시작 단락 태그 만 생성하고 닫는 태그는 생성하지 않습니다.

브라우저는 단락을 올바르게 닫을 것이라는 가정이 맞지 않다고 생각합니다. 내 해석이 정확합니까? 더 일반적으로, 이런 종류의 결정에는 어떤 상충 관계가 있습니까?


moinmoin 소스 코드를 살펴보면 다음 코드 줄이 눈에 띄었습니다.

# We only open those tags and let the browser auto-close them:
_auto_closing_tags = set(['p'])

( 소스 )

나머지 구현을 통해 읽은 후, 실제로 moinmoin이 해당 페이지 중 하나에 대해 html 코드를 생성하면 단락 열린 태그를 올바르게 생성하면서 동시에 의도적으로 모든 것을 피할 수 있음을 확신했습니다. 단락 닫기 태그 (사소하게 그렇게 할 수 있음에도 불구하고).

내 특이하고 다소 특이한 유스 케이스의 경우이 동작이 올바르지 않습니다. 버그 보고서를 제출하거나 동작을 변경하고 싶습니다. 그러나이 디자인 결정은 신중하게 이루어진 것 같습니다. 나는 HTML 표준의 복잡한 또는 다양한 브라우저 구현에 정통하지 않아 이것이 일반적인 행동인지 알 수 있으며,이 행동을 수정 / 변경하려는 본능이 있다고 생각합니다. 잘못 인도.

이 코드는 브라우저 구현에 대한 유효한 가정입니까? 생성 된 HTML이 유효합니까? 더 일반적으로, 여기서 어떤 트레이드 오프가 누락 될 수 있습니까?


2
현재의 대답에도 불구하고 이것은 모로 닉 디자인처럼 보입니다. "당신이 받아들이고 보내는 것에 대해 보수적 인 태도를 취하십시오"그리고 그 모든 것. 또한 완전히 필요하지 않습니다. 내가 것이다 확실히 MoinMoin을에 (강하게 말로) 버그 리포트를 제출합니다. 최소한이 직관적이지 않은 행동을 명확하게 문서화하고 의견을 말해야합니다.
Konrad Rudolph

답변:


33

p요소의 끝 태그 는 HTML에서 선택적이며 XHTML에서만 필요했습니다. 그러나 HTML5 초안에는 p종료 태그가 실제로 선택적인 경우에 대한 조건 세트가 도입되었습니다 .

p 요소 바로 뒤에 주소, 기사, 곁에, 블록 인용 부호, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, 헤더가 오는 경우 p 요소의 종료 태그는 생략 될 수 있습니다. , hgroup, hr, menu, nav, ol, p, pre, section, table 또는 ul, element 또는 부모 요소에 더 이상 내용이없고 부모 요소가 a 요소가 아닌 경우.

출처 : HTML5 사양

그건 내가 들어 본 것 유일한 인수 말했다 에 대한 의 종료 태그를 생략 p요소가 문서의 크기입니다. 문서에 적합한 지 여부를 결정하는 것은 전적으로 귀하의 책임입니다. 개인적으로 나는 끝 태그가 옵션 일 때의 요구 사항을 충족시키지 못하는 경우를 대비하여 모든 선택적인 끝 태그를 포함하는 경향이 있습니다.


5
좋은 생각은 비슷하게 생각합니다. :)
Robert Harvey

@RobertHarvey이 라운드에서 12 초 승리합니다.
yannis

2
끝 태그를 생략하는 또 다른 주장은 문서 구조에서 분명하며 잘못 사용하면 잘못된 공백이 생길 수 있다는 것입니다.
Jon Purdy

1
엔드 태그를 생략 할 수 있다는 것은 HTML을 기반으로 한 SGML의 디자인 기능이었습니다. 또한 XHTML을 기반으로하는 XML의 기능은 명시 적으로 아닙니다.
Alan Shutko

4
내가 많이 보는 한 가지 주장은 그것이 더 깨끗해 보인다는 것입니다. 특히 <li>태그 의 경우 태그는 글 머리 기호와 같은 역할을합니다.
DisgruntledGoat

16

HTML5에 대한 W3C 사양은 특별히 그 상태 :

p 요소 바로 뒤에 주소, 기사, 곁에, 블록 인용 부호, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, 헤더가 오는 경우 p 요소의 종료 태그는 생략 될 수 있습니다. , hr, menu, nav, ol, p, pre, section, table 또는 ul 요소 또는 상위 요소에 더 이상 컨텐츠가없고 상위 요소가 a 요소가 아닌 경우.

따라서 기본적으로 사양은 태그를 닫는 복잡성 (크거나 작을 수 있음)을 피할 수있는 많은 방법을 제공했습니다. 적합한 브라우저 구현은 이러한 예외를 수용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.