이 문서는 CSS Namespaces Module Level 3 (W3C Recommendation 29 September 2011, edited in place 20 March 2014 )의 한국어 번역본입니다.
이 문서에 오역 및 오타를 포함할 수 있습니다. 가능하면 원문도 확인하시길 바랍니다.
스펙 문서의 규범적인 정의에 수정이 있을 가능성이 있기 때문에 errata를 확인하시길 바랍니다. 번역본도 있습니다.
Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
CSS 네임스페이스 모듈은 CSS에서 네임스페이스를 사용하기 위한 구문을 정의합니다. 구체적으로는, 기본 네임스페이스의 선언과 접두사를 붙인 네임스페이스를 선언하는 @namespace 규칙을 정의합니다. 또 다른 스펙이 네임스페이스 수식 접두사를 사용하기 위한 구문도 정의하고 있습니다. CSS는 (HTML과 XML같은) 문서가 화면, 종이, 음성 등에 보여질 때 렌더링 방법에 대해 기술합니다.
This CSS Namespaces module defines the syntax for using namespaces in CSS. It defines the @namespace rule for declaring the default namespace and binding namespaces to namespace prefixes, and it also defines a syntax that other specifications can adopt for using those prefixes in namespace-qualified names. CSS is a language for describing the rendering of structured documents (such as HTML and XML) on screen, on paper, in speech, etc.
이 섹션은 이 문서를 공개했을 때 상태에 대해 설명합니다. 다른 문서가 이 문서를 덮어쓸 가능성이 있으니 주의하시길 바랍니다. 이 문서 및 W3C에서 공개한 다른 문서의 최신 버전은 W3C technical reports index at http://www.w3.org/TR/에서 확인 가능합니다.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
이 문서는 CSS 워킹 그룹에서 제공하는 권고안입니다.
This document was produced by the CSS Working Group as a Recommendation.
이 문서는 W3C 멤버, 소프트웨어 개발자, 그리고 다른 W3C 그룹 및 관계자들이 평가를 진행하여, 디렉터에 의해 W3C 권고안으로 발표했습니다. 이 문서는 안정적이며, 참고자료로 사용하거나 다른 문서에서 인용해도 좋습니다. 스펙 문서의 권고를 통해 W3C가 하는 역할은 스펙 문서에 관심을 모으고 다방면으로 퍼뜨리는 일입니다. 이를 통해 웹의 기능과 상호운용성 향상을 기대할 수 있습니다.
This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.
W3C는 이 스펙에 대한 구현에 모두가 참가하기를 기대합니다. 코멘트는 (archived) 공개 메일링 목록 www-style@w3.org으로 보낼 수 있습니다. (참가 안내서) 메일을 전송할 때 제목에 “css-namespaces-3”를 넣어주시길 바랍니다. 이는 즉 “[css-namespaces-3] …summary of comment…” 같은 형태일 것입니다.
W3C encourages everybody to implement this specification. Comments may be sent to the (archived) public mailing list www-style@w3.org (see instructions). When sending e-mail, please put the text “css-namespaces-3” in the subject, preferably like this: “[css-namespaces-3] …summary of comment…”
이 문서는 2004년 2월 6일 W3C 특허 정책을 따르는 그룹에서 작성하였습니다. W3C는 그룹의 성과물에 관련하여 모든 공개 특허 공개 리스트를 관리합니다. 여기에는 특허 공개에 대한 지시사항도 포함합니다. 특허에 대해서 충분한 지식이 있는 사람이, 스펙 문서의 Essential Claim(s)에 인정된다고 파악되는 경우, W3C 특허 정책 제 6장에 의거하여 정보를 공개해야 할 필요가 있습니다.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent.
이전 버전과 현재 버전의 변경점을 보고 싶다면, 변경점 섹션을 참고하시길 바랍니다.
For details of the changes since the previous version, see the Changes section.
이 섹션은 표준에 준하는 내용이 아닙니다.
This section is non-normative.
CSS 네임스페이스 모듈은 CSS 에서 사용하는 네임스페이스 문법을 정의합니다. 기본 네임스페이스를 선언하기 위한 @namespace 규칙과 네임스페이스 접두사로 바인딩하는 네임스페이스를 정의합니다. 네임스페이스 수식명을 나타내기 좋은 접두사를 이용하는 문법도 정의합니다. 그러나 이 스펙에서는 어떤 이름이 유효한지, 또 이름이 갖는 의미에 대해서는 정의하지 않습니다. 이런 내용은 호스트 언어에 의해 정의된 콘텍스트에 의존합니다. 예를 들면 셀렉터 ([SELECT])는 CSS 네임스페이스 모듈에서 정의한 구문을 참조하고 있습니다.
This CSS Namespaces module defines syntax for using namespaces in CSS. It defines the @namespace rule for declaring a default namespace and for binding namespaces to namespace prefixes. It also defines a syntax for using those prefixes to represent namespace-qualified names. It does not define where such names are valid or what they mean: that depends on their context and is defined by a host language, such as Selectors ([SELECT]), that references the syntax defined in the CSS Namespaces module.
이 모듈을 지원하지 않는 CSS 클라이언트가 CSS’s forward-compatible parsing rules에 적합하는 경우, 모든 @namespace 규칙, 네임스페이스 수식명을 이용한 스타일 규칙을 무시합니다. CSS에서 접두사를 정하는 구문은, CSS 클라이언트가 틀리는 일 없이 스타일 규칙을 무시할 수 있도록, 세심한 주의를 기울이고 있습니다.
Note that a CSS client that does not support this module will (if it properly conforms to CSS’s forward-compatible parsing rules) ignore all @namespace rules, as well as all style rules that make use of namespace qualified names. The syntax of delimiting namespace prefixes in CSS was deliberately chosen so that these CSS clients would ignore the style rules rather than possibly match them incorrectly.
문서나 구현체는 CSS 네임스페이스 하나에만 적합하는 건 불가능합니다. 그러나 이 스펙을 표준으로 참조하는 다른 호스트 언어나 CSS를 구현한 경우, CSS 네임스페이스에 적합하였다고 언급할 수 있습니다.
A document or implementation cannot conform to CSS Namespaces alone, but can claim conformance to CSS Namespaces if it satisfies the conformance requirements in this specification when implementing CSS or another host language that normatively references this specification.
CSS 네임스페이스에 대한 적합성은 두개의 클래스로 구분합니다.
Conformance to CSS Namespaces is defined for two classes:
적합성 요구사항은 서술적인 묘사 및 RFC 2119 용어의 조합으로 표현합니다. 키워드는 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 및 "OPTIONAL"이 있으며, 이 문서의 표준 파트에서 사용하는 의미는 RFC 2119에서 설명하는 의미와 동일합니다. 그러나 가독성을 위해, 이 스펙 문서에서 이 단어들은 모두 대문자로 보이지 않을 것입니다. 이 스펙 문서에서 표준에 준하는 내용이 아니라 명시된 섹션 및 예제, 노트를 제외한 모든 내용은 표준에 준하는 내용입니다. [RFC2119]
The conformance requirements are expressed with a combination of descriptive assertions and RFC 2119 terminology. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the normative parts of this document are to be interpreted as described in RFC 2119. However, for readability, these words do not appear in all uppercase letters in this specification. All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes. [RFC2119]
이 스펙문서의 예제는 "for example"이라는 단어 혹은 class="example"
을 이용해 따른 표준 텍스트보다 돋보이게 보여집니다:
Examples in this specification are introduced with the words "for example"
or are set apart from the normative text with class="example"
,
like this:
유용한 정보를 주는 예제의 예제입니다.
유용한 정보를 주는 노트는 "Note"라는 단어와 함께 시작하거나 class="note"
를 이용해
다른 표준 텍스트보다 돋보이게 보여집니다:
Informative notes begin with the word "Note" and are set apart from the
normative text with class="note"
, like this:
Note, this is an informative note.
이 스펙문서에서 정의하는 것 외의 용어에 대해서 CSS 네임스페이스는 Namespaces in XML 1.0 [XML-NAMES]에서 정의한 용어를 사용합니다. 이 스펙문서에서 정의한 구문은 XML의 요소나 속성명을 나타내는 것이 아닌, 호스트 언어에서 정의한 다른 네임스페이스를 나타내기도 합니다. (MAY)
Besides terms introduced by this specification, CSS Namespaces uses the terminology defined in Namespaces in XML 1.0. [XML-NAMES] However, the syntax defined here is not restricted to representing XML element and attribute names and may represent other kinds of namespaces as defined by the host language.
CSS 네임스페이스에서, 공백 문자열로 이루어진 네임스페이스명은, null 네임스페이스 혹은 네임스페이스가 존재하지 않는 것으로 해석합니다.
In CSS Namespaces a namespace name consisting of the empty string is taken to represent the null namespace or lack of a namespace.
@namespace empty ""; @namespace "";
이 때 타입 셀렉터
elem
, |elem
, empty|elem
은 모두 동일합니다.
@namespace 규칙은 접두사를 선언해, 주어진 네임스페이스명 (문자열)과 결합할 수 있습니다. 이 네임스페이스 접두사는, 이 문서에서 정의하는 CSS 수식명 등에 네임스페이스 수식명으로 이용할 수 있습니다.
The @namespace at-rule declares a namespace prefix and associates it with a given namespace name (a string). This namespace prefix can then be used in namespace-qualified names such as the CSS qualified names defined below.
@namespace "http://www.w3.org/1999/xhtml"; @namespace svg "http://www.w3.org/2000/svg";
첫번째 규칙은 기본 네임스페이스 http://www.w3.org/1999/xhtml
로 선언하고 있습니다.
네임스페이스가 명시되어있지 않은 것은, 기본네임스페이스에 속하는 것으로 처리합니다.
The first rule declares a default namespace
http://www.w3.org/1999/xhtml
to be applied to names that have no explicit namespace component.
두번째 규칙은 네임스페이스 접두사 svg
를 선언하여, 그를 네임스페이스 http://www.w3.org/2000/svg
에 묶은 것입니다.
svg
네임스페이스 접두사를 사용하는 것은, 대응하는 네임스페이스에 속하는 것으로 처리합니다.
The second rule declares a namespace prefix svg
that is used to apply the namespace http://www.w3.org/2000/svg
where the svg
namespace prefix is used.
CSS 네임스페이스나 XML 1.0 네임스페이스에서 접두사는 문서 구조의 일부로만 사용합니다: 로컬명과 네임스페이스명의 조합에서 이루어지는, 확장명이 중요합니다. 이를 위해, CSS 스타일시트에서 사용하는 접두사와 네임스페이스가 기본인지에 아닌지에 대해서, 적용 대상 문서가 정의합니다. 네임스페이스 접두사나 기본 네임스페이스는 대응하지 않습니다.
In CSS Namespaces, as in Namespaces in XML 1.0, the prefix is merely a syntactic construct; it is the expanded name (the tuple of local name and namespace name) that is significant. Thus the actual prefixes used in a CSS style sheet, and whether they are defaulted or not, are independent of the namespace prefixes used in the markup and whether these are defaulted or not.
<qml:elem xmlns:qml="http://example.com/q-markup"></qml:elem>
이 문서에 다음과 같은 @namespace 선언을 가지는 CSS 파일을 추가합니다. and the following @namespace declarations at the beginning of a CSS file:
@namespace Q "http://example.com/q-markup"; @namespace lq "http://example.com/q-markup";
이 때, CSS 파일 안에 있는 Q|elem과 lq|elem는 둘 다 <qml:elem>
요소에 매치합니다.
The selectors Q|elem and lq|elem in that CSS file
would both match the element <qml:elem>
.
(셀렉터 CSS 네임스페이스가 문서 언어에 의해 선언된 게 아닌 CSS 안에 선언한 접두사만 인정하기 때문에 qml|elem는 유효하지 않습니다) (The selector qml|elem would be invalid, because CSS namespaces only recognize prefixes declared in CSS, not those declared by the document language.)
@namespace 규칙의 구문은 아래 내용을 참조합니다. (Grammar appendix of CSS 2.1 [CSS21]을 참조한 기호를 사용합니다)
The syntax for the @namespace rule is as follows (using the notation from the Grammar appendix of CSS 2.1 [CSS21]):
namespace : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* ; namespace_prefix : IDENT ;
에 새로운 토큰이 있습니다:
@{N}{A}{M}{E}{S}{P}{A}{C}{E} {return NAMESPACE_SYM;}
모든 @namespace 규칙은 모든 @charset과 @import 규칙 그리고 무시하지 않는 @규칙과 스타일 시트 안의 룰셋을 따를 필요가 있습니다.
CSS 구문에서 이는 stylesheet
문법에서 [ import [S|CDO|CDC]* ]*
바로 뒤에 [ import [S|CDO|CDC]* ]*
를 추가합니다.
Any @namespace rules must follow all @charset and @import rules
and precede all other non-ignored at-rules and style rules in a style sheet.
For CSS syntax this adds [ namespace [S|CDO|CDC]* ]*
immediately after [ import [S|CDO|CDC]* ]*
in the stylesheet
grammar.
문법상 유효하지 않은 @namespace 규칙(부적절하거나 형태를 준수하지 않은)은 무시해야 합니다. 유효하지 않은 @namespace 규칙을 포함한 CSS style sheet는 유효한 스타일시트가 아닙니다.
A syntactically invalid @namespace rule (whether malformed or misplaced) must be ignored. A CSS style sheet containing an invalid @namespace rule is not a valid style sheet.
URI
문법으로 파싱한 URI 문자열은 리터럴 문자열로 취급해야 합니다.
이는 STRING
구문과 동일하게 처리하며, URI 고유의 정규화 처리는 일으키지 않는다는 의미입니다.
A URI string parsed from the URI
syntax must be treated as a literal string:
as with the STRING
syntax,
no URI-specific normalization is applied.
모든 문자열— All strings— 네임스페이스 접두사는, @namespace 규칙이 작성되어 있는 스타일 시트에서만 선언 가능합니다.
즉 @namespace 규칙이 있는 스타일시트가 임포트한 스타일시트,
@namespace 규칙이 있는 스타일시트를 임포트한 스타일시트,
같은 문서에 적용하는 다른 스타일시트에서, 접두사는 선언되어있지 않는 것으로 인식합니다.
The namespace prefix is declared only within the style sheet in which its
@namespace rule appears. It is not declared in any style sheets
importing or imported by that style sheet, nor in any other style sheets
applying to the document.
네임스페이스 접두사를 선언하면,
선언된 네임스페이스와 네임스페이스 수식명이 속한 네임스페이스를 나타냅니다.
네임스페이스 접두사는 CSS 카운터 명과 동일하게 대소문자를 구별합니다.
A namespace prefix, once declared,
represents the namespace for which it was declared
and can be used to indicate the namespace of a namespace-qualified name.
Namespace prefixes are,
like CSS counter names,
case-sensitive.
네임스페이스 접두사를 생략한채로 네임스페이스를 선언한 경우, 네임스페이스는 기본 네임스페이스로 선언합니다.
기본 네임스페이스는 접두사를 가지지 않는 이름에 적용할 수 있습니다 (MAY).
네임스페이스 접두사를 사용하는 모듈은, 기본 네임스페이스를 적용하는 내용에 대해 정의할 필요가 있습니다 (MUST).
예를 들어, [XML-NAMES]에 따르면
셀렉터[SELECT]는 기본 네임스페이스를 타입 셀렉터에 적용하지만,
속성 셀렉터에는 적용하지 않습니다. 기본 네임스페이스에는 초기값이 존재하지 않기 때문입니다.
참조하지 않는 이름을 기본 네임스페이스에 적용하는 모듈은 기본 네임스페이스를 정의하지 않은 경우 참조하지 않는 이름을 어떻게 해석해야하는 지 정의해야할 필요가 있습니다.
If in the namespace declaration the namespace prefix is omitted,
then the namespace so declared is the default namespace.
The default namespace may apply to names that have no explicit namespace prefix:
modules that employ namespace prefixes must define in which contexts the default namespace applies.
For example, following [XML-NAMES],
in Selectors [SELECT] the default namespace applies to type selectors— 노트: 타입셀렉터와 기본 네임스페이스가 함께 쓰일 때, UA의 기본 네임스페이스 지원 여부가 셀렉터의 해석에 영향을 줍니다.
Note: Note that using default namespaces in conjunction with type selectors
can cause UAs that support default namespaces
and UAs that don’t support default namespaces
to interpret selectors differently.
만약 네임스페이스 접두사나 기본 네임스페이스를 1개 이상 선언한 경우 마지막으로 선언한 것만 사용합니다 (SHALL).
네임스페이스 접두사 및 기본 네임스페이스 선언을 한번 이상 하는 건 옳지 않습니다.
If a namespace prefix or default namespace is declared more than once
only the last declaration shall be used.
Declaring a namespace prefix or default namespace more than once is nonconforming.
CSS 수식명은 명시적으로 네임스페이스에 위치한 (연결된) 이름을 의미합니다.
수식명을 CSS 구문에서 구성하는 경우,
선언된 네임스페이스 접두사는 요소나 속성명 앞에 "vertical bar"( A CSS qualified name is a name explicitly located within (associated with) a namespace.
To form a qualified name in CSS syntax,
a namespace prefix that has been declared within scope is prepended to a local name
(such as an element or attribute name),
separated by a "vertical bar"(
기본네임스페이스를 적용한 내용에서는
In a context where the default namespace applies
로컬명 앞에 있는 CSS 수식명 구문은 아래와 같습니다.
이 구문 정의에서는, 와일드마크 접두사를 허가하는 것( The syntax for the portion of a CSS qualified name before the local name is given below,
both for qualified names that allow wildcard prefixes ( CSS 수식명은 셀렉터나 속성값 등 다른 모듈에서 정의한 부분에 사용하는게 가능합니다.
이러한 모듈은, 적절히 선언하지 않은 네임스페이스 접두사를 어떻게 처리해야 할 지 정의해야합니다 (MUST).
이러한 처리에 있어, 선언하지 않은 네임스페이스 접두사는, 파스 에러로 취급해야 합니다 (SHOULD).
에러에 따라 셀렉터나 선언 등을 유효하지 않은 것으로 처리하여, CSS에서는무시합니다.
CSS qualified names can be used in (for example)
selectors and property values as described in other modules.
Those modules must define handling of namespace prefixes that have not been properly declared.
Such handling should treat undeclared namespace prefixes as a parsing error
that will cause the selector or declaration (etc.) to be considered invalid
and, in CSS, ignored.
예를 들어, 셀렉터 모듈[SELECT]이 네임스페이스 선언을 하지 않고, 접두사를 사용하고 있는 타입 셀렉터를 유효하지 않다고 판단합니다, CSS[CSS21]에서는 유효하지 않은 셀렉터에 따른 룰셋을 무시합니다.
For example, the Selectors module [SELECT] defines a type selector
with an undeclared namespace prefix
to be an invalid selector,
and CSS [CSS21] requires style rules with an invalid selector to be completely ignored.
Changes made since the 29 September 2011 Recommendation:
This draft borrows heavily from earlier drafts on CSS namespace support
by Chris Lilley and by Peter Linss
and early (unpublished) drafts on CSS and XML by Håkon Lie and Bert Bos,
and XML Namespaces and CSS by Bert Bos and Steven Pemberton.
Many current and former members of the CSS Working Group have contributed to this document.
Discussions on www-style@w3.org and in other places have also contributed ideas to this specification.
Special thanks goes to
L. David Baron,
Karl Dubost,
Ian Hickson,
Björn Höhrmann,
and Lachlan Hunt
for their comments.
No properties defined.3.2 스코프
3.3 접두사 선언
4 CSS 수식명
|
, U+007C)로 구분해 작성해야 합니다.
선언된 네임스페이스를 나타내는 접두사는, 로컬명 네임스페이스를 나타냅니다.
어떤 네임스페이스에도 속하지 않는 것에 대해서는, 수식명의 접두사를 제거할 수 있습니다. (MAY)
즉, 수식명에 있어 네임스페이스 이름에는 어떤 값도 존재하지 않는다는 의미입니다.
호스트 언어가 정의하는 내용에 따라, 네임스페이스를 묻지 않고 모든 이름을 대상으로 하도록,
접두사 와일드카드로 별표(*
, U+002A)를 사용할 수 있습니다. (MAY)
네임스페이스에 속하지 않는 것도 대상입니다.
|
, U+007C).
The prefix, representing the namespace for which it has been declared,
indicates the namespace of the local name.
The prefix of a qualified name may be omitted to indicate that the name belongs to no namespace,
i.e. that the namespace name part of the expanded name has no value.
Some contexts (as defined by the host language)
may allow the use of an asterisk (*
, U+002A)
as a wildcard prefix to indicate a name in any namespace,
including no namespace.
@namespace toto "http://toto.example.org";
@namespace "http://example.com/foo";
toto|A
http://toto.example.org
네임스페이스 안 A
이름을 나타냅니다.
|B
B
이름을 나타냅니다.
*|C
C
이름을 나타냅니다.
D
http://example.com/foo
네임스페이스에 속하는 D
이름을 나타냅니다.
wqname
)과
허가하지 않는 것(qname
) 둘 다 정의합니다.
구문은 Grammar appendix of CSS 2.1 [CSS21]을 이용합니다. 이를 통해,
토큰 사이에는 공백 문자가 아니고, 코멘트를 암묵적으로 허용하는 점에 주의하시길 바랍니다.
wqname
)
and for qualified names that disallow wildcard prefixes (qname
).
(The syntax uses notation from the Grammar appendix of CSS 2.1. [CSS21]
Note this means that comments, but not white space, are implicitly allowed between tokens.):
qname_prefix
: namespace_prefix? '|'
;
wqname_prefix
: [ namespace_prefix? | '*' ] '|'
;
qname
: qname_prefix? ident
;
wqname
: wqname_prefix? ident
;
wqwname
: wqname_prefix? [ ident | '*' ]
;
변경점
Acknowledgments
참고 문서
표준 참고 문서
정보 참고 문서
인덱스
속성 인덱스