차례
  1. 8 HTML 문법
    1. 8.1 HTML 문서 작성
      1. 8.1.1 DOCTYPE
      2. 8.1.2 요소
        1. 8.1.2.1 시작 태그
        2. 8.1.2.2 종료 태그
        3. 8.1.2.3 속성
        4. 8.1.2.4 선택적 태그
        5. 8.1.2.5 내용 모델의 제한사항
        6. 8.1.2.6 텍스트 원형과 RCDATA 요소 내용에 대한 제한
      3. 8.1.3 텍스트
        1. 8.1.3.1 줄바꿈
      4. 8.1.4 문자 참조
      5. 8.1.5 CDATA 섹션
      6. 8.1.6 주석

8 HTML 문법

이 섹션은 HTML 마임 타입으로 명명된 자원에 관한 규칙만을 설명합니다. XML 자원에 관한 규칙들은 XHTML 문법 섹션에서 다룰 것입니다.

This section only describes the rules for resources labeled with an HTML MIME type. Rules for XML resources are discussed in the section below entitled "The XHTML syntax".

8.1 HTML 문서 작성

This section only applies to documents, authoring tools, and markup generators. In particular, it does not apply to conformance checkers; conformance checkers must use the requirements given in the next section ("parsing HTML documents").

문서는 반드시 다음을, 주어진 순서대로 포함해야 합니다:

Documents must consist of the following parts, in the given order:

  1. 선택적으로, 하나의 바이트 순서 문자

    Optionally, a single U+FEFF BYTE ORDER MARK (BOM) character.

  2. 주석공백문자. 제한없음.

    Any number of comments and space characters.

  3. DOCTYPE

    A DOCTYPE.

  4. 주석공백문자. 제한없음.

    Any number of comments and space characters.

  5. html 형태의 루트 요소

    The root element, in the form of an html element.

  6. 주석공백문자. 제한없음.

    Any number of comments and space characters.

위에서 언급된 다양한 형태의 내용들은 다음의 몇개 섹션에서 설명될 것입니다.

The various types of content mentioned above are described in the next few sections.

이에 더해, 문자 인코딩 선언이 직렬화되는 방법에 대해 약간의 제한이 있으며, 이러한 것은 그 주제에 관한 섹션에서 다루어졌습니다.

In addition, there are some restrictions on how character encoding declarations are to be serialized, as discussed in the section on that topic.

루트 html 요소 앞의 공백문자, html 요소의 시작부분에 있는 공백문자, 그리고 head 요소의 앞에 있는 공백문자들은 문서가 파싱될때 제거됩니다. 루트 html 요소 다음에 있는 공백문자들은, body 요소의 마지막에 있는 것처럼 파싱될 것입니다. 따라서, 루트 요소 주변의 공백문자들은 순환하지 않습니다.

Space characters before the root html element, and space characters at the start of the html element and before the head element, will be dropped when the document is parsed; space characters after the root html element will be parsed as if they were at the end of the body element. Thus, space characters around the root element do not round-trip.

DOCTYPE → 루트 요소 앞에 있는 주석들 → html 요소의 시작 태그 → 주석 → head 요소 위치에 있고 html 요소 안에 있는 모든 주석들 다음에 줄바꿈을 하기를 권합니다.

It is suggested that newlines be inserted after the DOCTYPE, after any comments that are before the root element, after the html element's start tag (if it is not omitted), and after any comments that are inside the html element but before the head element.

HTML 문법에서 많은 문자열들(예를 들어 요소의 이름과 그 속성)이 대소문자를 구분하지 않습니다만, 이러한 것은 A-Z, 그리고 a-z에 한정됩니다. 편리함을 위하여, 이 섹션에서 이러한 것은 "대소문자 무관" 이라고만 표현합니다. 역주

Many strings in the HTML syntax (e.g. the names of elements and their attributes) are case-insensitive, but only for characters in the ranges U+0041 to U+005A (LATIN CAPITAL LETTER A to LATIN CAPITAL LETTER Z) and U+0061 to U+007A (LATIN SMALL LETTER A to LATIN SMALL LETTER Z). For convenience, in this section this is just referred to as "case-insensitive".

8.1.1 DOCTYPE

DOCTYPE은 필요한 서두입니다.

A DOCTYPE is a required preamble.

DOCTYPE은 오래된 것들 때문에 필요합니다. 이것이 누락된다면, 브라우저들은 일부 명세와는 호환되지 않는 렌더링 모드를 사용하는 경향이 있습니다. DOCTYPE을 포함하면 문서에 대해 다음의 관련되는 명세들에 대해 최선의 시도를 할 것을 보장할 수 있습니다.

DOCTYPEs are required for legacy reasons. When omitted, browsers tend to use a different rendering mode that is incompatible with some specifications. Including the DOCTYPE in a document ensures that the browser makes a best-effort attempt at following the relevant specifications.

DOCTYPE은 다음의 문자들을, 다음의 순서대로 포함해야 합니다.

A DOCTYPE must consist of the following characters, in this order:

  1. <!DOCTYPE 아스키, 대소문자 구분없이.

    A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".

  2. 하나 이상의 공백문자

    One or more space characters.

  3. HTML 아스키, 대소문자 구분없이.

    A string that is an ASCII case-insensitive match for the string "html".

  4. 선택적으로, 구형 DOCTYPE 문자열 또는 폐기되었지만 허용되는 DOCTYPE 문자열 (아래에 정의됩니다)

    Optionally, a DOCTYPE legacy string or an obsolete permitted DOCTYPE string (defined below).

  5. 0개 이상의 공백문자

    Zero or more space characters.

  6. >

    A U+003E GREATER-THAN SIGN character (>).

즉, 대소문자 구분 없이 <!DOCTYPE html> 입니다.

In other words, <!DOCTYPE html>, case-insensitively.


짧은 DOCTYPE인 "<!DOCTYPE html>"를 사용하는 HTML 마크업을 생성하지 못하는 HTML 생성기들을 위해, DOCTYPE에 구형 DOCTYPE 문자열을 삽입(위에서 정의한 위치에)할 수 있습니다. 문자열은 반드시 다음과 같아야 합니다:

For the purposes of HTML generators that cannot output HTML markup with the short DOCTYPE "<!DOCTYPE html>", a DOCTYPE legacy string may be inserted into the DOCTYPE (in the position defined above). This string must consist of:

  1. 하나 이상의 공백문자

    One or more space characters.

  2. SYSTEM 아스키, 대소문자 구분없이.

    A string that is an ASCII case-insensitive match for the string "SYSTEM".

  3. 하나 이상의 공백문자

    One or more space characters.

  4. " 또는 ' (따옴표)

    A U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (the quote mark).

  5. 정확히, "about:legacy-compat"

    The literal string "about:legacy-compat".

  6. 앞 단계에서 사용한것과 동일한 " 또는 ' (따옴표)

    A matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeled quote mark).

즉, <!DOCTYPE html SYSTEM "about:legacy-compat"> 또는 <!DOCTYPE html SYSTEM 'about:legacy-compat'>. 대소문자 구분은 없지만 따옴표는 짝이 맞아야 합니다.

In other words, <!DOCTYPE html SYSTEM "about:legacy-compat"> or <!DOCTYPE html SYSTEM 'about:legacy-compat'>, case-insensitively except for the part in single or double quotes.

구형 DOCTYPE 문자열은 짧은 문자열을 출력할 수 없는 시스템에서 생성된 문서 이외의 경우에서는 사용하면 안됩니다.

The DOCTYPE legacy string should not be used unless the document is generated from a system that cannot output the shorter string.


저자들이 HTML4과 XHTML1 문서들을 변환하는 것을 돕기 위해, 폐기되었지만 허용되는 DOCTYPE 문자열을 DOCTYPE 에 삽입(위에서 정의된 위치에)할 수 있습니다. 이 문자열은 반드시 다음과 같아야 합니다:

To help authors transition from HTML4 and XHTML1, an obsolete permitted DOCTYPE string can be inserted into the DOCTYPE (in the position defined above). This string must consist of:

  1. 하나 이상의 공백문자

    One or more space characters.

  2. PUBLIC 아스키, 대소문자 구분없이.

    A string that is an ASCII case-insensitive match for the string "PUBLIC".

  3. 하나 이상의 공백문자

    One or more space characters.

  4. " 또는 ' (첫번째 따옴표)

    A U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (the first quote mark).

  5. 아래 테이블의 첫 열에 있는 셀의 문자열들 중 하나. 이 셀이 속하는 행은 선택된 행입니다.

    The string from one of the cells in the first column of the table below. The row to which this cell belongs is the selected row.

  6. 앞 단계에서 사용한것과 동일한 " 또는 ' (첫번째 따옴표)

    A matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeled first quote mark).

  7. 선택된 행의 두번째 열에 해당하는 셀이 비어 있지 않다면, 하나 이상의 공백문자

    If the cell in the second column of the selected row is not blank, one or more space characters.

  8. 선택된 행의 두번째 열에 해당하는 셀이 비어 있지 않다면, " 또는 ' (세번째 따옴표)

    If the cell in the second column of the selected row is not blank, a U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (the third quote mark).

  9. 선택된 행의 두번째 열에 해당하는 셀이 비어 있지 않다면, 그 셀의 문자열

    If the cell in the second column of the selected row is not blank, the string from the cell in the second column of the selected row.

  10. 선택된 행의 두번째 열에 해당하는 셀이 비어 있지 않다면, 앞 단계에서 사용한것과 동일한 " 또는 ' (세번째 따옴표)

    If the cell in the second column of the selected row is not blank, a matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeled third quote mark).

폐기되었지만 허용되는 DOCTYPE 문자열의 퍼블릭, 시스템 식별자에 허용되는 값입니다.

Public identifier

System identifier

-//W3C//DTD HTML 4.0//EN

-//W3C//DTD HTML 4.0//EN

http://www.w3.org/TR/REC-html40/strict.dtd

-//W3C//DTD HTML 4.01//EN

-//W3C//DTD HTML 4.01//EN

http://www.w3.org/TR/html4/strict.dtd

-//W3C//DTD XHTML 1.0 Strict//EN

http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

-//W3C//DTD XHTML 1.1//EN

http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd

폐기되었지만 허용되는 DOCTYPE 문자열을 포함하는 DOCTYPE폐기되었지만 허용되는 DOCTYPE입니다. 이러한 것은 쓸모없이 길므로 사용하지 말아야 합니다.

A DOCTYPE containing an obsolete permitted DOCTYPE string is an obsolete permitted DOCTYPE. Authors should not use obsolete permitted DOCTYPEs, as they are unnecessarily long.

8.1.2 요소

요소에는 다섯가지 종류가 있습니다: 보이드, 텍스트 원형, raw text elements, RCDATA, 외래 요소, 그리고 일반 요소입니다.

There are five different kinds of elements: void elements, raw text elements, RCDATA elements, foreign elements, and normal elements.

보이드Void elementsVoid elements

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

텍스트 원형Raw text elements

script, style

RCDATARCDATA elements

textarea, title

외래 요소Foreign elements

MathML 네임스페이스, SVG 네임스페이스에서 유래한 요소

Elements from the MathML namespace and the SVG namespace.

일반 요소Normal elements

위에서 언급한 것을 제외하고 HTML에서 허용하는 모든 요소가 일반 요소입니다.

All other allowed HTML elements are normal elements.

태그는 마크업에서 요소가 시작되는 부분과 끝나는 부분을 표시하기 위해 사용됩니다. 텍스트 원형, RCDATA, 그리고 일반 요소는 자신이 시작하는 지점을 표시하는 시작 태그, 그리고 끝나는 지점을 표시하는 종료 태그를 갖습니다. 일반 요소 중 몇가지는 시작 태그나 종료 태그를 생략할 수 있으며, 이러한 것은 아래에 설명됩니다. 생략할 수 없는 것을 생략해서는 안됩니다. 보이드 요소는 시작 태그만을 가지며, 이러한 요소들에 종료 태그를 사용해서는 안됩니다. 외래 요소는 시작과 종료 태그를 모두 갖거나, 스스로 종료하는 것으로 표시된 시작태그를 갖는데, 후자의 경우는 종료 태그를 사용할 수 없습니다.

Tags are used to delimit the start and end of elements in the markup. Raw text, RCDATA, and normal elements have a start tag to indicate where they begin, and an end tag to indicate where they end. The start and end tags of certain normal elements can be omitted, as described later. Those that cannot be omitted must not be omitted. Void elements only have a start tag; end tags must not be specified for void elements. Foreign elements must either have a start tag and an end tag, or a start tag that is marked as self-closing, in which case they must not have an end tag.

요소의 내용은 시작 태그의 바로 다음, 그리고 종료 태그의 바로 앞 사이에 있어야 합니다. 시작 태그나 종료 태그가 암시되는 몇가지 특별한 경우가 있습니다. 각각의 요소에서 허용되는 정확한 내용들은 요소의 내용 모델에 따라 다른데, 그러한 것은 이 명세의 앞에서 설명되었습니다. 요소는 자신의 내용 모델이 허용하지 않는 것을 포함해서는 안됩니다. 물론, 이러한 제한에 더해, 다섯가지 타입의 요소들은 추가적인 구문론적 제한을 갖습니다.

The contents of the element must be placed between just after the start tag (which might be implied, in certain cases) and just before the end tag (which again, might be implied in certain cases). The exact allowed contents of each individual element depend on the content model of that element, as described earlier in this specification. Elements must not contain content that their content model disallows. In addition to the restrictions placed on the contents by those content models, however, the five types of elements have additional syntactic requirements.

보이드 요소는 내용을 가질 수 없습니다. (종료 태그가 없으므로, 시작 태그와 종료 태그 "사이"에 들어갈 내용이 없습니다.)

Void elements can't have any contents (since there's no end tag, no content can be put between the start tag and the end tag).

텍스트 원형 요소텍스트를 가질 수 있는데, 아래에 설명될 제한이 있습니다.

Raw text elements can have text, though it has restrictions described below.

RCDATA 요소텍스트문자 참조를 포함할 수 있지만, 텍스트는 모호한 앰퍼샌드(&)를 포함해서는 안됩니다. 아래에 설명될 더 많은 제한이 있습니다.

RCDATA elements can have text and character references, but the text must not contain an ambiguous ampersand. There are also further restrictions described below.

외래 요소 중 스스로를 종료하는 것으로 표시된 시작 태그를 갖는 것은 내용을 가질 수 없습니다. (다시 말하지만, 종료 태그가 없으므로, 시작 태그와 종료 태그 "사이"에 들어갈 수 있는 내용이 없습니다) 외래 요소 중 스스로를 종료하는 것으로 표시되지 않은 요소들은 텍스트, 문자 참조, CDATA 섹션, 다른 요소, 주석을 가질 수 있지만 텍스트는 < 문자나 모호한 앰퍼샌드를 포함할 수 없습니다.

Foreign elements whose start tag is marked as self-closing can't have any contents (since, again, as there's no end tag, no content can be put between the start tag and the end tag). Foreign elements whose start tag is not marked as self-closing can have text, character references, CDATA sections, other elements, and comments, but the text must not contain the character U+003C LESS-THAN SIGN (<) or an ambiguous ampersand.

HTML 문법은 네임스페이스 선언을 지원하지 않는데, 이러한 것은 외래 요소에서도 마찬가지입니다.

The HTML syntax does not support namespace declarations, even in foreign elements.

예를 들어, 다음의 마크업을 고려해 보십시오.

For instance, consider the following HTML fragment:

<p>
 <svg>
  <metadata>
   <!-- this is invalid -->
   <cdr:license xmlns:cdr="http://www.example.com/cdr/metadata" name="MIT"/>
  </metadata>
 </svg>
</p>

가장 깊숙히 있는 요소, cdr:license 는 사실상 SVG 네임스페이스에 있는 것이며, 따라서 xmlns:cdr 속성이 아무런 효과도 갖지 못합니다(XML과는 다릅니다). 사실, 위의 주석에 있는 것과 마찬가지로, 이러한 코드는 사실상 요구사항에 부합하지 않는 것입니다. 왜냐하면 SVG 명세는 그 네임스페이스에 cdr:license 라고 불리는 요소를 정의한 것이 없기 때문입니다.

The innermost element, cdr:license, is actually in the SVG namespace, as the "xmlns:cdr" attribute has no effect (unlike in XML). In fact, as the comment in the fragment above says, the fragment is actually non-conforming. This is because the SVG specification does not define any elements called "cdr:license" in the SVG namespace.

일반 요소텍스트, 문자 참조, 다른 요소, 주석를 가질 수 있으며, 텍스트는 < 문자나 모호한 앰퍼샌드를 포함할 수 없습니다. 일반 요소 중 일부는 내용 모델에서 노출된 것, 그리고 이 문단에서 설명한 것 이외에 더 많은 제한사항을 가지며, 그러한 것은 아래에서 설명됩니다.

Normal elements can have text, character references, other elements, and comments, but the text must not contain the character U+003C LESS-THAN SIGN (<) or an ambiguous ampersand. Some normal elements also have yet more restrictions on what content they are allowed to hold, beyond the restrictions imposed by the content model and those described in this paragraph. Those restrictions are described below.

태그는 태그 이름을 포함하며, 이것이 요소의 이름을 나타냅니다. 모든 HTML 요소들의 이름은 0-9, a-z, A-Z만으로 구성됩니다. HTML 문법에서 태그 이름은, 설령 외래 요소라고 하더라도, 대소문자를 섞어서 사용할 수 있습니다; 태그 이름은 대소문자를 구분하지 않습니다.

Tags contain a tag name, giving the element's name. HTML elements all have names that only use characters in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), U+0061 LATIN SMALL LETTER A to U+007A LATIN SMALL LETTER Z, and U+0041 LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z. In the HTML syntax, tag names, even those for foreign elements, may be written with any mix of lower- and uppercase letters that, when converted to all-lowercase, matches the element's tag name; tag names are case-insensitive.

8.1.2.1 시작 태그

시작 태그는 반드시 다음의 형식을 가져야 합니다.

Start tags must have the following format:

  1. 시작 태그의 첫 글자는 반드시 < 이어야 합니다.

    The first character of a start tag must be a U+003C LESS-THAN SIGN character (<).

  2. 다음의 몇 글자는 반드시 요소의 태그 이름이어야 합니다.

    The next few characters of a start tag must be the element's tag name.

  3. 그 다음에 어떤 속성이든지 써야 한다면, 하나 이상의 공백문자가 있어야 합니다.

    If there are to be any attributes in the next step, there must first be one or more space characters.

  4. 다음으로, 시작 태그는 많은 수의 속성들을 가질 수 있는데, 그 각각의 문법은 아래에 설명됩니다. 각각의 속성들은 서로의 사이에 하나 이상의 공백문자를 통해 구분될 수 있습니다.

    Then, the start tag may have a number of attributes, the syntax for which is described below. Attributes must be separated from each other by one or more space characters.

  5. 속성(속성이 없는 경우 태그 이름) 다음에는 하나 이상의 공백문자가 올 수 있습니다. (일부 속성은 따라오는 공백문자를 필요로 하는 경우도 있습니다. 자세한 것은 속성 섹션을 보십시오)

    After the attributes, or after the tag name if there are no attributes, there may be one or more space characters. (Some attributes are required to be followed by a space. See the attributes section below.)

  6. 다음으로, 요소가 보이드 요소 또는 외래 요소 중 하나라면, / 문자가 올 수 있습니다. 이 문자는 보이드 요소에서는 아무런 효과가 없지만, 외래 요소에서는 시작 태그를 스스로를 종료하는 태그로 표시합니다.

    Then, if the element is one of the void elements, or if the element is a foreign element, then there may be a single U+002F SOLIDUS character (/). This character has no effect on void elements, but on foreign elements it marks the start tag as self-closing.

  7. 마지막으로, 시작 태그는 반드시 > 문자로 종료되어야 합니다.

    Finally, start tags must be closed by a U+003E GREATER-THAN SIGN character (>).

8.1.2.2 종료 태그

종료 태그는 반드시 다음의 형식을 가져야 합니다:

End tags must have the following format:

  1. 종료 태그의 첫 글자는 반드시 < 문자여야 합니다.

    The first character of an end tag must be a U+003C LESS-THAN SIGN character (<).

  2. 종료 태그의 두번째 글자는 반드시 / 문자여야 합니다.

    The second character of an end tag must be a U+002F SOLIDUS character (/).

  3. 다음의 몇 글자는 반드시 요소의 태그 이름이어야 합니다.

    The next few characters of an end tag must be the element's tag name.

  4. 태그 이름 다음, 하나 이상의 공백문자가 올 수 있습니다.

    After the tag name, there may be one or more space characters.

  5. 마지막으로, 종료 태그는 반드시 > 문자로 종료되어야 합니다.

    Finally, end tags must be closed by a U+003E GREATER-THAN SIGN character (>).

8.1.2.3 속성

요소의 속성은 요소의 시작 태그 안에서 표현됩니다.

Attributes for an element are expressed inside the element's start tag.

속성은 이름과 값을 가집니다. 속성 이름은 하나 또는 그 이상의 문자로 구성되는데, 다음의 문자들은 사용할 수 없습니다: 공백문자, Null, ", ', >, /, =, 제어 문자, 그리고 유니코드로 표현할 수 없는 문자. HTML 문법에서, 속성의 이름은, 그것이 외래 요소라고 하더라도 대소문자를 구분하지 않습니다.

Attributes have a name and a value. Attribute names must consist of one or more characters other than the space characters, U+0000 NULL, U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), U+003E GREATER-THAN SIGN (>), U+002F SOLIDUS (/), and U+003D EQUALS SIGN (=) characters, the control characters, and any characters that are not defined by Unicode. In the HTML syntax, attribute names, even those for foreign elements, may be written with any mix of lower- and uppercase letters that are an ASCII case-insensitive match for the attribute's name.

속성의 값텍스트문자 참조의 혼합된 형태이며, 텍스트에 모호한 앰퍼샌드를 사용할 수 없다는 추가적인 제한이 있습니다.

Attribute values are a mixture of text and character references, except with the additional restriction that the text cannot contain an ambiguous ampersand.

속성들은 네가지 방식으로 명시될 수 있습니다:

Attributes can be specified in four different ways:

빈 속성 문법Empty attribute syntax

속성 이름만을 사용합니다. 속성의 값은 암시적으로 빈 문자열입니다.

Just the attribute name. The value is implicitly the empty string.

다음의 예제에서는 disabled 속성이 빈 속성 문법으로 사용되었습니다.

In the following example, the disabled attribute is given with the empty attribute syntax:

<input disabled>

빈 속성 문법을 사용한 속성 뒤에 다른 속성을 써야 한다면, 둘 사이에 반드시 하나의 공백문자가 있어야 합니다.

If an attribute using the empty attribute syntax is to be followed by another attribute, then there must be a space character separating the two.

따옴표없는 속성값 문법Unquoted attribute value syntax

속성 이름 → 0개 이상의 공백문자 → = 문자 → 0개 이상의 공백문자속성값의 형태입니다. 속성의 값은 위에서 속성의 값에 주어진 제한사항들 이외에 추가적으로 다음의 문자를 사용할 수 없습니다 : 공백문자, ", ', =, <, >, `. 또한 속성값은 빈 문자열일 수 없습니다.

The attribute name, followed by zero or more space characters, followed by a single U+003D EQUALS SIGN character, followed by zero or more space characters, followed by the attribute value, which, in addition to the requirements given above for attribute values, must not contain any literal space characters, any U+0022 QUOTATION MARK characters ("), U+0027 APOSTROPHE characters ('), U+003D EQUALS SIGN characters (=), U+003C LESS-THAN SIGN characters (<), U+003E GREATER-THAN SIGN characters (>), or U+0060 GRAVE ACCENT characters (`), and must not be the empty string.

다음의 예제에서는 value 속성을 따옴표없는 속성값 문법으로 사용했습니다:

In the following example, the value attribute is given with the unquoted attribute value syntax:

<input value=yes>

따옴표없는 속성값 문법 뒤에 다른 속성, 또는 /문자(스스로 종료하는 시작 태그 문법입니다) 를 사용할 것이라면, 둘 사이에는 반드시 하나의 공백문자가 있어야 합니다.

If an attribute using the unquoted attribute syntax is to be followed by another attribute or by the optional U+002F SOLIDUS character (/) allowed in step 6 of the start tag syntax above, then there must be a space character separating the two.

작은따옴표 문법Single-quoted attribute value syntax

속성 이름 → 0개 이상의 공백문자 → = 문자, 0개 이상의 공백문자 → ' → 속성값 → '. 속성값에는 위에서 주어진 규칙 이외에 ' 문자를 사용할 수 없습니다.

The attribute name, followed by zero or more space characters, followed by a single U+003D EQUALS SIGN character, followed by zero or more space characters, followed by a single U+0027 APOSTROPHE character ('), followed by the attribute value, which, in addition to the requirements given above for attribute values, must not contain any literal U+0027 APOSTROPHE characters ('), and finally followed by a second single U+0027 APOSTROPHE character (').

다음의 예제에서, type 속성은 작은따옴표 문법으로 사용되었습니다.

In the following example, the type attribute is given with the single-quoted attribute value syntax:

<input type='checkbox'>

작은따옴표 문법을 사용한 속성 뒤에 다른 속성이 사용된다면, 하나의 공백문자를 사용해서 둘을 구분해야 합니다.

If an attribute using the single-quoted attribute syntax is to be followed by another attribute, then there must be a space character separating the two.

큰 따옴표 문법Double-quoted attribute value syntax

위와 같으며, ' 대신 " 를 사용합니다.

The attribute name, followed by zero or more space characters, followed by a single U+003D EQUALS SIGN character, followed by zero or more space characters, followed by a single U+0022 QUOTATION MARK character ("), followed by the attribute value, which, in addition to the requirements given above for attribute values, must not contain any literal U+0022 QUOTATION MARK characters ("), and finally followed by a second single U+0022 QUOTATION MARK character (").

다음의 예제에서, name 속성은 큰따옴표 문법으로 사용되었습니다.

In the following example, the name attribute is given with the double-quoted attribute value syntax:

<input name="be evil">

큰따옴표 문법으로 사용한 속성 다음에 다른 속성이 사용된다면, 하나의 공백문자로 둘 사이를 구분해야 합니다.

If an attribute using the double-quoted attribute syntax is to be followed by another attribute, then there must be a space character separating the two.

동일한 시작 태그 안에서 속성을 중복해서 사용해서는 안됩니다. 중복을 판별할때는 대소문자를 구분하지 않습니다.

There must never be two or more attributes on the same start tag whose names are an ASCII case-insensitive match for each other.


외래 요소가 그 지역 이름에서 네임스페이스 속성을 갖고, 다음 표에서 첫번째와 두번째 셀의 네임스페이스를 가진다면, 반드시 동일한 행에서 세번째 셀에 주어진 이름을 사용해야 합니다.

When a foreign element has one of the namespaced attributes given by the local name and namespace of the first and second cells of a row from the following table, it must be written using the name given by the third cell from the same row.

Local name

Namespace

Attribute name

actuate

XLink namespace

xlink:actuate

arcrole

XLink namespace

xlink:arcrole

href

XLink namespace

xlink:href

role

XLink namespace

xlink:role

show

XLink namespace

xlink:show

title

XLink namespace

xlink:title

type

XLink namespace

xlink:type

base

XML namespace

xml:base

lang

XML namespace

xml:lang

space

XML namespace

xml:space

xmlns

XMLNS namespace

xmlns

xlink

XMLNS namespace

xmlns:xlink

HTML 문법에서는 이 이외에 다른 네임스페이스를 갖는 속성을 표현할 수 없습니다.

No other namespaced attribute can be expressed in the HTML syntax.

8.1.2.4 선택적 태그

특정 태그들은 생략이 가능합니다. 역주

Certain tags can be omitted.

요소의 시작 태그를 생략하는 것이 요소가 존재하지 않음을 의미하는 것은 아닙니다. 그것은 암시된 것이며, 존재합니다. 설사 <html> 문자열이 마크업 어디에도 존재하지 않는다고 하더라도, HTML 문서는 항상 루트 html 요소를 가집니다.

Omitting an element's start tag does not mean the element is not present; it is implied, but it is still there. An HTML document always has a root html element, even if the string <html> doesn't appear anywhere in the markup.

8.1.2.5 내용 모델의 제한사항

관습적인 이유로, 몇몇 요소들은 내용 모델에서 주어진 것 이외에 추가적인 제한이 있습니다.

For historical reasons, certain elements have extra restrictions beyond even the restrictions given by their content model.

table 요소는 tr 요소를 포함할 수 없는데, 이러한 요소가 명세에서 설명한 내용 모델에서는 table 요소 내부에서 허용되고 있음에도 불구하고 그렇습니다. (만약 마크업에서 table 요소 내부에 tr을 사용하였다면, 이것은 사실 tbody 시작 태그를 그 앞에 암시하고 있는 것입니다.)

A table element must not contain tr elements, even though these elements are technically allowed inside table elements according to the content models described in this specification. (If a tr element is put inside a table in the markup, it will in fact imply a tbody start tag before it.)

pre요소와 textarea요소의 시작 태그 직후에 한개의 줄바꿈 문자를 사용할 수 있는데, 요소를 처리하는 과정에서는 이 문자를 무시합니다. 이 경우를 제외하면, 요소의 내용이 줄바꿈 문자로 시작하는 경우 반드시 그 문자를 요소의 처리 과정에 포함시켜야 합니다.

A single newline may be placed immediately after the start tag of pre and textarea elements. This does not affect the processing of the element. The otherwise optional newline must be included if the element's contents themselves start with a newline (because otherwise the leading newline in the contents would be treated like the optional newline, and ignored).

다음의 두 pre 블럭은 동일한 것입니다.

The following two pre blocks are equivalent:

<pre>Hello</pre>
<pre>
Hello</pre>
8.1.2.6 텍스트 원형과 RCDATA 요소 내용에 대한 제한

텍스트 원형RCDATA 요소는 다음 형식으로 구성된 문자열을 포함할 수 없습니다 : "</", 요소 이름(대소문자 구분 없이), 다음의 문자 중 하나 : 탭, LF(줄바꿈), FF(페이지넘김), CR(줄바꿈), 스페이스, >, /. 역주

The text in raw text and RCDATA elements must not contain any occurrences of the string "</" (U+003C LESS-THAN SIGN, U+002F SOLIDUS) followed by characters that case-insensitively match the tag name of the element followed by one of U+0009 CHARACTER TABULATION, U+000A LINE FEED (LF), U+000C FORM FEED (FF), U+000D CARRIAGE RETURN (CR), U+0020 SPACE, U+003E GREATER-THAN SIGN (>), or U+002F SOLIDUS (/).

8.1.3 텍스트

요소, 속성, 주석의 내부에서 텍스트를 사용할 수 있습니다. 텍스트는 유니코드 문자들로 구성되야 하며, U+0000(Null) 문자를 포함할 수 없습니다. 텍스트는 정의되지 않은 유니코드 문자(noncharacters)를 포함할 수 없습니다. 텍스트는 공백문자 이외의 제어문자를 포함할 수 없습니다. 텍스트가 들어갈 위치에 따라, 텍스트가 무엇인지, 텍스트에 무엇이 불허되는지에 대한 추가적인 제약사항이 발생할 수 있으며, 이러한 것은 다른 섹션들에서 설명되었습니다.

Text is allowed inside elements, attribute values, and comments. Text must consist of Unicode characters. Text must not contain U+0000 characters. Text must not contain permanently undefined Unicode characters (noncharacters). Text must not contain control characters other than space characters. Extra constraints are placed on what is and what is not allowed in text based on where the text is to be put, as described in the other sections.

8.1.3.1 줄바꿈

HTML에서 줄바꿈은 CR, LF, 또는 CRLF 문자로 표현될 수 있습니다.

Newlines in HTML may be represented either as U+000D CARRIAGE RETURN (CR) characters, U+000A LINE FEED (LF) characters, or pairs of U+000D CARRIAGE RETURN (CR), U+000A LINE FEED (LF) characters in that order.

문자 참조가 허용되는 곳에서는, LF 문자에 대한 참조(CR에 대한 참조는 아닙니다) 역시 줄바꿈을 나타냅니다.

Where character references are allowed, a character reference of a U+000A LINE FEED (LF) character (but not a U+000D CARRIAGE RETURN (CR) character) also represents a newline.

8.1.4 문자 참조

다른 섹션들에서 설명된 특정한 경우, 텍스트문자 참조를 포함할 수 있습니다. 일반적으로는 텍스트에 포함될 수 없는 문자를 이스케이프하기 위해 이러한 것을 사용할 수 있습니다.

In certain cases described in other sections, text may be mixed with character references. These can be used to escape characters that couldn't otherwise legally be included in text.

문자 참조는 & 문자로 시작합니다. 이 뒤에, 세가지 종류의 문자 참조가 있을 수 있습니다.

Character references must start with a U+0026 AMPERSAND character (&). Following this, there are three possible kinds of character references:

명명된 문자참조Named character references

& 뒤에는 명명된 문자 참조 섹션에서 주어진 이름만 올 수 있으며, 주어진 대소문자 구분을 따라야 합니다. 이러한 이름들은 ; 문자로 종료되어야 합니다.

The ampersand must be followed by one of the names given in the named character references section, using the same case. The name must be one that is terminated by a U+003B SEMICOLON character (;).

숫자 문자참조Decimal numeric character reference

& 뒤에 # 문자가 와야 하며, 하나 이상의 0 - 9 문자가 옵니다. 이러한 숫자는 다음의 설명에서 허용된 유니코드 포인트에 대응하는 십진수 정수를 나타냅니다. 숫자들은 ; 문자로 종료되어야 합니다.

The ampersand must be followed by a U+0023 NUMBER SIGN character (#), followed by one or more digits in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), representing a base-ten integer that corresponds to a Unicode code point that is allowed according to the definition below. The digits must then be followed by a U+003B SEMICOLON character (;).

16진수 문자참조Hexadecimal numeric character reference

& 뒤에 # 문자가 와야 하며, 그 뒤에 x 또는 X, 그리고 하나 이상의 0 - 9 및 a - f(대소문자 구분 없이) 가 옵니다. # 뒤에 있는 것은 다음의 설명에서 허용된 유니코드 포인트에 대응하는 십육진수 정수를 나타냅니다. 마지막은 ; 문자로 종료되어야 합니다.

The ampersand must be followed by a U+0023 NUMBER SIGN character (#), which must be followed by either a U+0078 LATIN SMALL LETTER X character (x) or a U+0058 LATIN CAPITAL LETTER X character (X), which must then be followed by one or more digits in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), U+0061 LATIN SMALL LETTER A to U+0066 LATIN SMALL LETTER F, and U+0041 LATIN CAPITAL LETTER A to U+0046 LATIN CAPITAL LETTER F, representing a base-sixteen integer that corresponds to a Unicode code point that is allowed according to the definition below. The digits must then be followed by a U+003B SEMICOLON character (;).

위에서 설명한 숫자 문자 참조는 다음을 제외한 모든 유니코드 포인트를 참조합니다 : Null, CR, noncharacters, 그리고 공백문자 이외의 모든 제어문자입니다.

The numeric character reference forms described above are allowed to reference any Unicode code point other than U+0000, U+000D, permanently undefined Unicode characters (noncharacters), and control characters other than space characters.

모호한 앰퍼샌드란 &0-9(a-z, A-Z); 의 형태를 갖지만, 명명된 문자 참조 섹션에서 주어진 이름들 중 어떠한 것과도 일치하지 않는 것을 말합니다.

An ambiguous ampersand is a U+0026 AMPERSAND character (&) that is followed by one or more characters in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), U+0061 LATIN SMALL LETTER A to U+007A LATIN SMALL LETTER Z, and U+0041 LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z, followed by a U+003B SEMICOLON character (;), where these characters do not match any of the names given in the named character references section.

8.1.5 CDATA 섹션

CDATA 섹션은 반드시 <![CDATA[ 로 시작해야 합니다. 이 문자열 다음에 텍스트가 올 수 있는데, 텍스트는 ]]> 를 포함할 수 없다는 추가적인 제한을 갖습니다. 마지막으로, 섹션은 반드시 ]]> 로 종료되어야 합니다.

CDATA sections must start with the character sequence U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+005B LEFT SQUARE BRACKET, U+0043 LATIN CAPITAL LETTER C, U+0044 LATIN CAPITAL LETTER D, U+0041 LATIN CAPITAL LETTER A, U+0054 LATIN CAPITAL LETTER T, U+0041 LATIN CAPITAL LETTER A, U+005B LEFT SQUARE BRACKET (<![CDATA[). Following this sequence, the CDATA section may have text, with the additional restriction that the text must not contain the three character sequence U+005D RIGHT SQUARE BRACKET, U+005D RIGHT SQUARE BRACKET, U+003E GREATER-THAN SIGN (]]>). Finally, the CDATA section must be ended by the three character sequence U+005D RIGHT SQUARE BRACKET, U+005D RIGHT SQUARE BRACKET, U+003E GREATER-THAN SIGN (]]>).

CDATA 섹션은 외래 컨텐츠(MathML 또는 SVG) 에서만 사용될 수 있습니다. 이 예제에서, CDATA 섹션은 ms 요소의 내용을 이스케이프하기 위해 사용되었습니다:

CDATA sections can only be used in foreign content (MathML or SVG). In this example, a CDATA section is used to escape the contents of an ms element:

<p>You can add a string to a number, but this stringifies the number:</p>
<math>
 <ms><![CDATA[x<y]]></ms>
 <mo>+</mo>
 <mn>3</mn>
 <mo>=</mo>
 <ms><![CDATA[x<y3]]></ms>
</math>

8.1.6 주석

주석은 반드시 <!--로 시작하여야 합니다. 이 문자열 뒤에 있는 주석은 텍스트를 포함할 수 있으며, 텍스트의 시작에는 >, -> 을 사용할 수 없고, 텍스트에 -- 를 포함할 수 없으며, 텍스트는 - 로 끝나서는 안됩니다. 마지막으로, 주석은 반드시 --> 로 종료되어야 합니다.

Comments must start with the four character sequence U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS (<!--). Following this sequence, the comment may have text, with the additional restriction that the text must not start with a single U+003E GREATER-THAN SIGN character (>), nor start with a U+002D HYPHEN-MINUS character (-) followed by a U+003E GREATER-THAN SIGN (>) character, nor contain two consecutive U+002D HYPHEN-MINUS characters (--), nor end with a U+002D HYPHEN-MINUS character (-). Finally, the comment must be ended by the three character sequence U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS, U+003E GREATER-THAN SIGN (-->).

다른 섹션에서도 그렇게 해 왔지만, 이 섹션 역시 유니코드 기호를 번역부분에 사용하지 않습니다. 즉, 원문에서 U+0061 (LATIN SMALL LETTER A) 라고 명기되어 있는 것을 번역 부분에는 그냥 a 라고 표기합니다. 돌아가기

원문대로 번역하면 가독성이 지나치게 떨어지므로 독자의 편의를 위해 테이블을 사용합니다. 돌아가기

요소 태그 생략가능한 경우
html 시작 html 요소 안에 있는 첫번째 것이 주석이 아닌 경우
html 종료 html 요소 바로 뒤에 있는것이 주석이 아닌 경우
head 시작 요소가 비어 있거나, head 요소의 첫번째 것이 요소가 아닌 경우
head 종료 요소 바로 뒤에 있는것이 공백문자나 주석이 아닌 경우
body 시작 요소가 비어 있거나, 요소에 포함된 첫번째 것이 공백문자 또는 주석이 아닌 경우. 단, 요소에 포함된 첫번째 것이 script 요소이거나 style 요소인 경우는 예외입니다.
body 요소의 바로 뒤에 주석이 오는 경우를 제외한 나머지
li 종료 요소 직후에 다른 li 요소가 오는 경우. 또는 부모 요소에 더이상의 내용이 없는 경우
dt 종료 요소 직후에 다른 dt 요소, 또는 dd 요소가 오는 경우
dd 종료 요소 직후에 다른 dd 요소, 또는 dt 요소가 오는 경우. 또는 부모 요소에 더이상의 내용이 없는 경우
p 종료
  • 요소의 바로 다음에 오는 것이 다음중 하나인 경우 : address, article, aside, blockquote, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, menu, nav, ol, p, pre, section, table, ul.
  • 부모 요소에 더이상의 내용이 없으며, 부모 요소가 a 요소가 아닌 경우
rt 종료

rt, rp 요소는 ruby 요소에서 사용하는 것입니다.

  • 요소의 직후에 오는 것이 rt, 또는 rp 인 경우
  • 부모 요소에 더이상의 내용이 없는 경우
rp 종료
  • 요소의 직후에 오는 것이 rt, 또는 rp 인 경우
  • 부모 요소에 더이상의 내용이 없는 경우
optgroup 종료
  • 요소 직후에 다른 optgroup 요소가 오는 경우
  • 부모 요소에 더이상의 내용이 없는 경우
option 종료
  • 요소의 직후에 오는 것이 option, 또는 optgroup 요소인 경우
  • 부모 요소에 더이상의 내용이 없는 경우
colgroup 시작 요소 내부의 처음에 있는 것이 col 요소이며, 요소 바로 앞에 있는 것이 종료 태그를 생략한 다른 colgroup 요소인 경우. (요소가 비어있다면 생략할 수 없습니다.)
colgroup 종료 요소의 바로 뒤에 오는 것이 공백문자, 또는 주석이 아닌 경우
thead 종료 요소 직후에 오는 것이 tbody, 또는 tfoot 요소인 경우
tbody 시작 요소 내부의 처음에 있는 것이 tr 요소이며, 요소의 직전에 있는 것이 종료태그가 생략된 tbody, thead, tfoot 요소 중 하나가 아닌 경우
tbody 종료
  • 요소의 직후에 있는 것이 tbody, 또는 tfoot 요소인 경우
  • 부모 요소에 더이상의 내용이 없는 경우
tfoot 종료
  • 요소의 직후에 있는 것이 tbody 요소인 경우
  • 부모 요소에 더이상의 내용이 없는 경우
tr 종료
  • 요소의 직후에 있는 것이 다른 tr 요소인 경우
  • 부모 요소에 더이상의 내용이 없는 경우
td 종료
  • 요소의 직후에 있는 것이 다른 td, 또는 th요소인 경우
  • 부모 요소에 더이상의 내용이 없는 경우
th 종료
  • 요소의 직후에 있는 것이 다른 td, 또는 th요소인 경우
  • 부모 요소에 더이상의 내용이 없는 경우

물론, 속성이 있는 경우에 시작 태그를 생략할 수는 없습니다.

However, a start tag must never be omitted if it has any attributes.

An html element's start tag may be omitted if the first thing inside the html element is not a comment.

An html element's end tag may be omitted if the html element is not immediately followed by a comment.

A head element's start tag may be omitted if the element is empty, or if the first thing inside the head element is an element.

A head element's end tag may be omitted if the head element is not immediately followed by a space character or a comment.

A body element's start tag may be omitted if the element is empty, or if the first thing inside the body element is not a space character or a comment, except if the first thing inside the body element is a script or style element.

A body element's end tag may be omitted if the body element is not immediately followed by a comment.

A li element's end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element.

A dt element's end tag may be omitted if the dt element is immediately followed by another dt element or a dd element.

A dd element's end tag may be omitted if the dd element is immediately followed by another dd element or a dt element, or if there is no more content in the parent element.

A p element's end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, menu, nav, ol, p, pre, section, table, or ul, element, or if there is no more content in the parent element and the parent element is not an a element.

An rt element's end tag may be omitted if the rt element is immediately followed by an rt or rp element, or if there is no more content in the parent element.

An rp element's end tag may be omitted if the rp element is immediately followed by an rt or rp element, or if there is no more content in the parent element.

An optgroup element's end tag may be omitted if the optgroup element is immediately followed by another optgroup element, or if there is no more content in the parent element.

An option element's end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element.

A colgroup element's start tag may be omitted if the first thing inside the colgroup element is a col element, and if the element is not immediately preceded by another colgroup element whose end tag has been omitted. (It can't be omitted if the element is empty.)

A colgroup element's end tag may be omitted if the colgroup element is not immediately followed by a space character or a comment.

A thead element's end tag may be omitted if the thead element is immediately followed by a tbody or tfoot element.

A tbody element's start tag may be omitted if the first thing inside the tbody element is a tr element, and if the element is not immediately preceded by a tbody, thead, or tfoot element whose end tag has been omitted. (It can't be omitted if the element is empty.)

A tbody element's end tag may be omitted if the tbody element is immediately followed by a tbody or tfoot element, or if there is no more content in the parent element.

A tfoot element's end tag may be omitted if the tfoot element is immediately followed by a tbody element, or if there is no more content in the parent element.

A tr element's end tag may be omitted if the tr element is immediately followed by another tr element, or if there is no more content in the parent element.

A td element's end tag may be omitted if the td element is immediately followed by a td or th element, or if there is no more content in the parent element.

A th element's end tag may be omitted if the th element is immediately followed by a td or th element, or if there is no more content in the parent element.

3) 즉, span 요소라고 하면, </span> 또는 </span/ 같은 문자열을 포함할 수 없다는 뜻입니다. 돌아가기