3 적합성: 요구 사항 및 권고사항

목차

3.1 정의

이 문서에서 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 그리고 "OPTIONAL"라는 핵심 단어들은 RFC 2119에서 설명된 대로 해석해야 합니다([RFC2119] 참고). 하지만, 가독성을 위해 이 명세에서는 이 단어들이 모두 대문자로 표기되지는 않습니다.

명세에서는 때로 작성자와 사용자 에이전트에게 권장하는 모범 사례를 제안합니다. 이러한 권장 사항은 규범적이지 않으며, 명세의 적합성은 그 실현 여부에 좌우되지 않습니다. 권장 사항에는 "권장합니다...", "이 명세는 ...을 권장합니다" 또는 이와 유사한 표현이 포함되어 있습니다.

어떤 기능이 더 이상 사용하지 않음을 의미하여 deprecated로 표시되어 있거나('aural' 키워드), CSS3에서 deprecated될 예정임을 의미하여(system colors) 표시되어 있어도 적합성에는 영향을 주지 않습니다. (예를 들어, 'aural'은 비규범적이므로 UA는 이를 지원할 필요가 없으며, system colors는 규범적이므로 UA는 이를 지원해야 합니다.)

이 명세의 모든 섹션(부록 포함)은 별도의 안내가 없는 한 규범적입니다.

예시와 참고는 규범적이지 않습니다.

예시:

예시는 일반적으로 시작 부분에 "예시", "다음 예시…", "예를 들면" 등과 같은 단어가 포함되어 있으며, 이 문단처럼 색상이 있는 배경으로 표시됩니다.

참고는 "참고"라는 단어로 시작하며 들여쓰기되어 초록색으로 표시됩니다. 이 문단처럼 보입니다.

도해는 설명용일 뿐입니다. 특별히 명시된 경우가 아니면 참조 렌더링이 아닙니다.

스타일 시트
문서의 표현을 지정하는 일련의 명령문 집합입니다.

스타일 시트에는 작성자, 사용자, 사용자 에이전트라는 세 가지 원천이 존재할 수 있습니다. 이 원천들의 상호작용은 캐스케이딩 및 상속 섹션에서 설명합니다.

유효한 스타일 시트
스타일 시트의 유효성은 해당 스타일 시트에서 사용하는 CSS의 버전에 따라 결정됩니다. 모든 유효한 CSS1 스타일 시트는 CSS 2.2 스타일 시트로도 유효하지만, CSS1에서 일부 변경 사항이 있으므로 일부 CSS1 스타일 시트는 CSS 2.2에서 약간 다른 의미를 가질 수 있습니다. CSS2의 일부 기능은 CSS 2.2에 포함되지 않으므로 모든 CSS2 스타일 시트가 CSS 2.2 스타일 시트로 유효한 것은 아닙니다.

유효한 CSS 2.2 스타일 시트는 CSS 2.2 문법에 따라 작성되어야 하며, 이 명세에서 정의된 at-rule, 속성 이름, 속성 값만을 포함해야 합니다. 잘못된 (유효하지 않은) at-rule, 속성 이름, 속성 값은 유효하지 않은 것을 의미합니다.

원본 문서
하나 이상의 스타일 시트가 적용되는 문서입니다. 이는 트리 구조의 요소들로 표현되는 어떤 언어로 인코딩됩니다. 각 요소는 해당 요소의 유형을 식별하는 이름, 선택적으로 여러 개의 속성, 그리고 (빈일 수도 있는) 콘텐츠로 구성됩니다. 예를 들어, 원본 문서는 XML 또는 SGML 인스턴스일 수 있습니다.
문서 언어
원본 문서의 인코딩 언어(예: HTML, XHTML, SVG 등). CSS는 문서 언어의 표현을 지정하는 데 사용되며, CSS는 문서 언어의 기본 의미에는 영향을 주지 않습니다.
요소
(SGML 용어, [ISO8879] 참고.) 문서 언어의 주요 문법 구조입니다. 대부분의 CSS 스타일 시트 규칙은 이러한 요소명(P, TABLE, OL 등)을 사용하여 해당 요소의 렌더링 방식을 지정합니다.
대체 요소

요소의 콘텐츠가 CSS 포맷 모델의 범위를 벗어나는 이미지, 임베디드 문서, 애플릿 등과 같은 요소입니다. 예를 들어, HTML IMG 요소의 콘텐츠는 종종 "src" 속성이 지정한 이미지로 대체됩니다. 대체 요소는 고유한 크기(고유 너비, 고유 높이, 고유 비율)를 가지는 경우가 많습니다. 예를 들어, 비트맵 이미지는 절대 단위로 지정된 고유 너비와 높이를 가지며, 이로부터 고유 비율을 알 수 있습니다. 반면, 다른 문서는 고유 크기를 가지지 않을 수도 있습니다(예: 빈 HTML 문서).

사용자 에이전트는 해당 크기가 외부에 민감한 정보를 노출할 수 있다고 판단될 경우, 대체 요소가 고유 크기를 가지지 않는 것으로 간주할 수 있습니다. 예를 들어, HTML 문서가 사용자의 은행 잔고에 따라 크기가 바뀐다면, UA는 해당 리소스에 고유 크기가 없는 것처럼 동작할 수 있습니다.

대체 요소의 콘텐츠는 CSS 렌더링 모델에서 고려되지 않습니다.

고유 크기
요소 자체가 정의한 너비와 높이로, 주변 환경에 의해 결정되지 않습니다. CSS는 고유 크기 산정 방법을 정의하지 않습니다. CSS 2.2에서는 대체 요소만 고유 크기를 가질 수 있습니다. 신뢰할 수 있는 해상도 정보가 없는 래스터 이미지의 경우, 이미지 소스 픽셀당 1px 단위를 크기로 간주해야 합니다.
속성
요소에 할당된 값으로, 이름과 이에 연결된 (텍스트) 값으로 구성됩니다.
콘텐츠
원본 문서의 요소에 연결된 콘텐츠입니다. 일부 요소는 콘텐츠가 없으며, 이를 빈 요소라고 합니다. 요소의 콘텐츠에는 텍스트가 포함될 수 있고, 여러 하위 요소가 포함될 수도 있습니다. 이 경우 해당 요소는 이러한 하위 요소의 부모입니다.
무시
이 용어는 이 명세에서 약간 다른 두 가지 의미로 사용됩니다. 첫째, CSS 파서가 스타일 시트에서 알 수 없는 혹은 잘못된 문법을 발견하면, 파서는 스타일 시트의 특정 부분을 무시해야 합니다. 어떤 부분을 무시해야 하는지에 대한 정확한 규칙은 해당 섹션(선언과 속성, 구문 오류 처리 규칙, 지원되지 않는 값)이나 "무시"라는 용어가 등장하는 본문에서 설명합니다. 둘째, 사용자 에이전트는 경우에 따라(필요하면) 스타일 시트의 특정 속성이나 값을 무시할 수 있습니다. 예를 들어, table-column 요소는 컬럼의 폰트에 영향을 줄 수 없으므로, 폰트 속성은 무시되어야 합니다.
렌더링된 콘텐츠
관련 스타일 시트가 적용된 후의 요소 콘텐츠입니다. 대체 요소의 콘텐츠가 어떻게 렌더링되는지는 이 명세에서 정의하지 않습니다. 렌더링된 콘텐츠에는 요소의 대체 텍스트(예: XHTML "alt" 속성값)나 스타일 시트에 의해 암묵적으로 또는 명시적으로 삽입된 항목(불릿, 번호 등)이 포함될 수 있습니다.
문서 트리
원본 문서에 인코딩된 요소들의 트리입니다. 이 트리의 각 요소는 하나의 부모만 가지며, 루트 요소만 예외로 부모가 없습니다.
자식
요소 B가 요소 A의 부모일 때만, 요소 A는 요소 B의 자식이라고 합니다.
후손
요소 B가 요소 A의 자식이거나, 요소 B가 요소 A의 어떤 후손인 C의 자식일 때, 요소 B는 요소 A의 후손이라고 합니다.
조상
요소 B가 요소 A의 후손일 때만, 요소 A는 요소 B의 조상이라고 합니다.
형제
요소 B와 A가 동일한 부모 요소를 공유할 때만, 요소 A는 요소 B의 형제입니다. 요소 A가 문서 트리에서 B보다 앞에 오면 A는 앞선 형제, B가 뒤에 오면 B는 뒤따르는 형제입니다.
앞선 요소
요소 B의 조상이거나, 요소 B의 앞선 형제일 때만, 요소 A는 요소 B의 앞선 요소입니다.
뒤따르는 요소
요소 A가 요소 B의 앞선 요소일 때만, 요소 A는 요소 B의 뒤따르는 요소입니다.
작성자
작성자는 문서와 관련 스타일 시트를 작성하는 사람입니다. 작성 도구는 스타일 시트를 생성하는 사용자 에이전트입니다.
사용자
사용자는 사용자 에이전트를 통해 문서와 관련 스타일 시트를 보고, 듣고, 기타 방식으로 사용하는 사람입니다. 사용자는 개인적 취향을 반영한 스타일 시트를 제공할 수 있습니다.
사용자 에이전트(UA)
사용자 에이전트는 문서 언어로 작성된 문서를 해석하고, 관련 스타일 시트를 이 명세의 조건에 따라 적용하는 모든 프로그램입니다. 사용자 에이전트는 문서를 표시하거나, 음성으로 읽어 주거나, 인쇄하거나, 다른 형식으로 변환하는 등의 작업을 수행할 수 있습니다.
HTML 사용자 에이전트란 하나 이상의 HTML 명세를 지원하는 에이전트입니다. XHTML [XHTML]만 지원하고 HTML을 지원하지 않는 에이전트는 이 명세의 적합성을 위한 HTML 사용자 에이전트로 간주하지 않습니다.
속성
CSS는 문서의 렌더링을 지시하는 유한한 파라미터(속성)를 정의합니다. 각 속성은 이름(예: 'color', 'font', 'border')과 값(예: 'red', '12pt Times', 'dotted')을 가지며, 속성은 문서의 여러 부분과 문서가 표시될 페이지에 특이성, 캐스케이딩, 상속 메커니즘(자세한 내용은 속성 값 지정, 캐스케이딩, 상속 섹션 참조)을 통해 할당됩니다.

다음은 HTML로 작성된 원본 문서 예시입니다:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>   
  <TITLE>내 홈페이지</TITLE>
  <BODY>
    <H1>내 홈페이지</H1>
    <P>내 홈페이지에 오신 것을 환영합니다! 내가 좋아하는 작곡가를 소개합니다:
    <UL>
      <LI> Elvis Costello
      <LI> Johannes Brahms
      <LI> Georges Brassens
    </UL>
  </BODY>
</HTML>

이 문서는 다음과 같은 트리를 만듭니다:

샘플 문서 트리   [D]

HTML 4 정의에 따르면, HEAD 요소는 파싱 중에 추론되어 문서 트리에 포함되며, 문서 소스에 "head" 태그가 없어도 마찬가지입니다. 마찬가지로, 파서는 소스에 </p>와 </li> 태그가 없어도 P와 LI 요소의 끝을 알고 있습니다.

XHTML(및 기타 XML 기반 언어)로 작성된 문서는 다르게 동작합니다: 추론되는 요소가 없으며 모든 요소에 종료 태그가 필요합니다.

3.2 UA 적합성

이 섹션은 CSS 2.2 명세에 대한 적합성만 정의합니다. 향후 다른 수준의 CSS에서는 적합성을 위해 사용자 에이전트가 다른 기능 집합을 구현해야 할 수도 있습니다.

일반적으로, 이 명세에 적합성을 주장하는 사용자 에이전트는 다음 사항을 준수해야 합니다:

  1. CSS 2.2 미디어 유형 중 하나 이상을 인식해야 합니다.
  2. 각 원본 문서에 대해 인식된 미디어 유형에 적합한 모든 연결된 스타일 시트를 가져오려고 시도해야 합니다. 모든 연결된 스타일 시트를 가져올 수 없는 경우(예: 네트워크 오류 등), 가져올 수 있는 스타일 시트만 사용하여 문서를 표시해야 합니다.
  3. 이 명세에 따라 스타일 시트를 파싱해야 합니다. 특히, 모든 at-rule, 블록, 선언, 선택자를 인식해야 합니다(CSS 2.2 문법 참조). 사용자 에이전트가 지원하는 미디어 유형에 적용되는 속성을 만나면, 해당 속성 정의에 따라 값을 파싱해야 합니다. 즉, 사용자 에이전트는 모든 유효한 값을 허용해야 하며, 무효한 값이 있는 선언을 무시해야 합니다. 사용자 에이전트는 지원하지 않는 미디어 유형에 적용되는 규칙도 무시해야 합니다.
  4. 문서 트리의 각 요소에 대해, 속성 정의와 캐스케이딩 및 상속 규칙에 따라 각 속성에 값을 할당해야 합니다.
  5. 원본 문서가 대안 스타일 시트 세트(예: HTML 4 [HTML4]의 "alternate" 키워드 등)를 제공하는 경우, UA는 사용자가 적용할 스타일 시트 세트를 선택할 수 있도록 해야 합니다.
  6. UA는 사용자가 작성자 스타일 시트의 영향을 끌 수 있도록 허용해야 합니다.

모든 사용자 에이전트가 모든 사항을 준수해야 하는 것은 아닙니다:

특정 디바이스의 한계(예: 사용자 에이전트가 단색 모니터나 페이지에서 색상을 렌더링할 수 없는 경우)로 인해 명세의 일부를 구현할 수 없는 것은 적합성 부족을 의미하지 않습니다.

UA는 사용자가 사용자 스타일 시트가 담긴 파일을 지정할 수 있도록 해야 합니다. 파일 지정이 불가능한 디바이스에서 실행되는 UA는 이 요구사항에서 면제됩니다. 또한, UA는 GUI와 같은 기타 방법으로 사용자가 선호 설정을 지정할 수 있게 할 수 있습니다.

CSS 2.2는 폼 컨트롤이나 프레임에 어떤 속성이 적용되는지, CSS로 스타일링하는 방법을 정의하지 않습니다. 사용자 에이전트는 이들 요소에 CSS 속성을 적용할 수 있습니다. 작성자는 이러한 지원을 실험적으로 취급하는 것이 권장됩니다. 향후 CSS의 새로운 수준에서 더 명확히 규정될 수 있습니다.

3.3 오류 조건

일반적으로, 이 문서에서는 명세 전체에서 오류 처리 동작을 규정합니다. 예를 들어, 구문 오류 처리 규칙을 참고하세요.

3.4 text/css 콘텐츠 타입

별도의 파일로 존재하는 CSS 스타일 시트는 인코딩 정보와 함께 바이트 시퀀스로 인터넷을 통해 전송됩니다. 이 전송 구조를 메시지 엔티티라고 하며, RFC 2045와 RFC 2616에서 정의되어 있습니다([RFC2045], [RFC2616] 참고). "text/css" 콘텐츠 타입의 메시지 엔티티는 독립적인 CSS 문서를 나타냅니다. "text/css" 콘텐츠 타입은 RFC 2318에 의해 등록되어 있습니다([RFC2318]).