XHTML의 유효한 자체 닫힘 요소는 모두 무엇입니까(주요 브라우저에서 구현됨)?

StackOverflow https://stackoverflow.com/questions/97522

문제

유효한 자체 폐쇄 요소는 모두 무엇입니까(예:<br/>)를 XHTML로(주요 브라우저에서 구현됨)?

나는 XHTML이 기술적으로 모든 요소를 ​​자동으로 닫을 수 있다는 것을 알고 있지만 모든 주요 브라우저에서 지원되는 요소 목록을 찾고 있습니다.보다 http://dusan.fora.si/blog/self-closing-tags <div />와 같은 자체 닫는 요소로 인해 발생하는 일부 문제의 예를 살펴보세요.

도움이 되었습니까?

해결책

XHTML을 지원하는 모든 브라우저(Firefox, Opera, Safari, IE9)는 자체 닫는 구문을 지원합니다. 모든 요소.

<div/>, <script/>, <br></br> 모두 잘 작동할 것입니다.그렇지 않다면, 당신은 HTML XHTML DOCTYPE이 부적절하게 추가되었습니다.

DOCTYPE은 문서 해석 방식을 변경하지 않습니다. MIME 유형만 가능.

DOCTYPE 무시에 대한 W3C 결정:

HTML WG는 이 문제를 논의했습니다:의도는 구식 (HTML 전용) 브라우저가 지침을 따르고 텍스트/HTML로 제공하여 XHTML 1.0 문서를 수락 할 수 있도록하는 것이 었습니다.따라서 텍스트/HTML로 사용 된 문서는 XHTML이 아닌 HTML로 취급되어야합니다.

W3C Validator는 해당 규칙을 대부분 무시하지만 브라우저는 이를 종교적으로 따르기 때문에 이는 매우 일반적인 함정입니다.읽다 HTML, XML 및 XHTML 이해 WebKit 블로그에서:

실제로 인터넷에 있는 XHTML 문서의 대다수는 다음과 같은 형식으로 제공됩니다. text/html.이는 전혀 XHTML이 아니지만 실제로는 HTML 파서의 오류 처리를 방해하는 잘못된 HTML임을 의미합니다.그 모든 "유효한 xhtml 1.0!" 웹의 링크는 실제로 "유효하지 않은 HTML 4.01!"라고 말합니다.


실제 XHTML이 있는지 또는 XHTML의 DOCTYPE이 포함된 잘못된 HTML이 있는지 테스트하려면 다음을 문서에 입력하세요.

<span style="color:green"><span style="color:red"/> 
 If it's red, it's HTML. Green is XHTML.
</span>

검증되었으며 실제 XHTML에서는 완벽하게 작동합니다(참조: 12).눈을 믿을 수 없다면(또는 MIME 유형을 설정하는 방법을 모르는 경우) 다음을 통해 페이지를 여십시오. XHTML 프록시.

확인하는 또 다른 방법은 Firefox에서 소스를 보는 것입니다.슬래시가 유효하지 않은 경우 빨간색으로 강조 표시됩니다.

HTML5/XHTML5에서는 이는 변경되지 않았으며 추가 항목도 없기 때문에 구별이 더욱 명확해졌습니다. DOCTYPE. Content-Type 왕이다.


참고로 XHTML 사양에서는 XHTML을 다음 요소로 만들어 모든 요소를 ​​자동으로 닫을 수 있도록 허용합니다. XML 애플리케이션:[강조 내 것]

빈 요소 태그는 다음 용도로 사용될 수 있습니다. 내용이 없는 모든 요소, EMPTY 키워드를 사용하여 선언되었는지 여부.

에도 명시적으로 나와있습니다. XHTML 사양:

빈 요소는 다음과 같아야 합니다. 어느 하나 종료 태그가 있거나 시작 태그는 다음으로 끝나야 합니다. />.예를 들어, <br/> 또는 <hr></hr>

다른 팁

이 주제에 관해 매우 주의해야 할 요소 중 하나는 <script> 요소.외부 소스 파일이 있는 경우 자체 종료하면 문제가 발생합니다.시도 해봐:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />

이것은 Firefox에서는 작동하지만 적어도 IE6에서는 작동하지 않습니다.나는 내가 본 모든 요소를 ​​지나치게 열성적으로 자체 닫을 때 이 문제에 직면했기 때문에 알고 있습니다. ;-)

자체 닫는 구문은 application/xhtml+xml의 모든 요소에서 작동합니다.text/html의 어떤 요소에서도 지원되지 않지만 HTML4의 "비어 있는" 요소 또는 HTML5의 "void" 요소는 어쨌든 종료 태그를 취하지 않으므로 해당 요소에 슬래시를 넣으면 마치 자체 닫는 구문이 지원되었습니다.

로부터 W3 학교 참고 사이트:

<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />

더 나은 질문은 다음과 같습니다.코드에 영향을 주지 않고 HTML 모드에서도 자동으로 닫힐 수 있는 태그는 무엇입니까?답변:내용이 비어 있는 것(공허함)만 있습니다.에 따르면 HTML 사양 다음 요소는 무효입니다.

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

이전 버전의 사양도 나열됨 command.게다가 다양한 출처에 따르면 다음과 같은 더 이상 사용되지 않거나 비표준 태그는 무효입니다.

basefont, bgsound, frame, isindex

이것이 누군가에게 도움이 되기를 바랍니다:

<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />

는 어때 <meta> 그리고 <link>?왜 그 목록에 없나요?

경험에 따르면, 콘텐츠를 포함할 요소를 자동으로 닫지 마세요. 조만간 브라우저 문제가 발생할 수 있기 때문입니다.

다음과 같이 자연스럽게 자동으로 닫히는 제품은 <br> 그리고 <img>, 분명해야합니다.그렇지 않은 것들은 ...그냥 자동으로 닫지 마세요!

지난번 확인해보니 HTML5에 나열된 빈/공허 요소는 다음과 같습니다.

작성자에게 유효함:지역, 기본, br, col, 명령, 삽입, 이벤트 소스, hr, img, 입력, 링크, 메타, 매개변수, 소스

작성자에게 유효하지 않음:기본 글꼴, bgsound, 프레임, 스페이서, wbr

HTML5의 몇 가지 새로운 기능 외에도 XHTML을 text/html로 제공할 때 지원될 수 있는 기능에 대한 아이디어를 제공합니다.(생성된 DOM을 검사하여 테스트해 보세요.)

application/xhtml+xml(XML이 됨)로 제공되는 XHTML의 경우 XML 규칙이 적용되며 모든 요소는 비어 있을 수 있습니다(XHTML DTD가 이를 표현할 수 없더라도).

당신은 살펴 봐야합니다 xHTML DTD, 모두 나열되어 있습니다.다음은 모든 주요 내용을 간략하게 검토한 것입니다.

<br />
<hr />
<img />
<input />

HTML 5에서는 이를 "void" 요소라고 합니다.그들은에 나열되어 있습니다 공식 W3 사양.

void 요소는 콘텐츠 모델이 어떤 상황에서도 콘텐츠를 가질 수 없도록 허용하는 요소입니다.

2013년 4월 기준으로 다음과 같습니다.

지역, 베이스, br, col, 명령, 포함, hr, img, 입력, keygen, 링크, 메타, 매개변수, 소스, 트랙, wbr

2018년 12월 기준(HTML 5.2)은 다음과 같습니다.

지역, 기본, br, 열, 포함, 시간, img, 입력, 링크, 메타, 매개변수, 소스, 트랙, wbr

IE의 또 다른 자체 닫는 태그 문제는 제목 요소입니다.IE(IE7에서 방금 시도)가 이를 확인하면 사용자에게 빈 페이지가 표시됩니다.그러나 "소스를 보면" 모든 것이 거기에 있습니다.

<title/>

나는 원래 XSLT가 자체 닫는 태그를 생성했을 때 이것을 보았습니다.

특히 내가 작성하는 대부분의 페이지가 생성되었거나 태그에 콘텐츠가 있기 때문에 이에 대해 지나치게 자세히 설명하지는 않겠습니다.자동 폐쇄를 만들 때 나에게 문제를 안겨준 유일한 두 가지는 다음과 같습니다.

<title/>

이를 위해 나는 항상 별도의 닫는 태그를 제공하기로 했습니다. <head></head> 어쨌든 코드를 작업하기 더 복잡하게 만들지는 않습니다.

<script/>

이것은 내가 최근에 문제에 부딪힌 큰 문제입니다.수년 동안 나는 항상 자기 폐쇄 방식을 사용해 왔습니다. <script/> 스크립트가 외부 소스에서 오는 경우 태그.하지만 최근에 null 형식에 대한 JavaScript 오류 메시지가 나타나기 시작했습니다.며칠 동안 조사한 결과, 문제는 (아마도) 브라우저가 <form> 태그는 이것이 이벤트의 끝이라는 것을 인식하지 못했기 때문입니다. <script/> 꼬리표.그래서 따로 만들었을 때 <script></script> 태그, 모든 것이 작동했습니다.같은 브라우저로 만든 페이지마다 왜 다른지 모르겠지만, 해결책을 찾아서 큰 다행이었습니다!

<hr />은 또 다른 것입니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top