아티클

XML선언, 문서형선언, 네임스페이스 및 언어코드

2006-12-14 12:35:46

출처 : 웹표준의 교과서
저자 : 마시코 타카히로
번역 : 박진영

XML선언

XHTML은 XML어플리케이션의 하나이므로 문서의 가장 첫 부분에 XML선언을 기술한다.

또한, XHTML의 디폴트 모드 코드셋은 [UTF-8] 혹은 [UTF-16]이고, 이 문자코드셋(character code set)을 사용할 경우는 XML선언 자체를 생략할 수 있으나, 기획 상 어떤 문자코드셋을 이용하던 간에 정확히 지정해 두는 것이 강력히 추천되고 있다.

<?XML version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head> </head>
<body> Contents </body>
</html>

버전(version) 속성

버전 속성은 필수항목으로 XML의 버전을 지정한다. 값은 XHTML의 버전이 아닌, 어디까지나 XML버전이므로 XHTML1.0이건 XHTML1.1이건 [1.0] 으로 지정한다.

엔코딩(encoding) 속성

엔코딩속성에서는 엔코드를 이용하는 문자코드셋을 지정한다. 엔코딩 속성을 지정하지 않는 경우, Unicode계의 [UTF-8] 혹은 [UTF-16] 이 적용된다. (앞에서 말했듯이 XHTML의 디폴트 문자셋은 [UTF-8] 혹은 [UTF-16]이다.)

문자코드셋이란 문자나 기호 하나하나에 배정된 식별기호(문자코드)를 일정 기준에 의해 정리한 것으로 한국어의 경우, [UTF-8] 혹은 [UTF-16] 이외에 [EUC-KR] 등이 일반적으로 사용된다.

또한 UTF-8에 대해서는 많은 브라우저가 지원하고 있으나, UTF-16은 일부 브라우저가 지원하지 않는 문제가 있다. 따라서 현재로서는 UTF-8, EUC-KR 등을 지정하는 것이 일반적이다.

standalone 속성

상기의 소스에서는 지정하지 않았으나, XML 선언에서는 standalone 속성을 지정할 수 있다. standalone속성이란 외부 DTD를 참조할 것인지 아닌지를 지정하기 위한 속성으로 값을 [Yes]로 하면 [참고하지 않음], [No]로 하면 [참고함]이 된다.
XHTML문서에서는 다음에 설명하는 문서형선언에서 외부 DTD를 참조한다. 그러기 위해 standalone 속성을 지정하는 경우는 [No]로 할 필요가 있으나 규정치는 [No]이므로 특별히 standalone 속성을 지정할 필요가 없다.

 

문서형 선언

한마디로 XHTML이라고 해도, 몇 개의 버전이 있기에 [이 문서는 어떤 버전의 XHTML 로 작성되어 있는가] 라고 표시할 필요가 있다. 이런 것을 문서형 선언(Document Type Declaration) 이라고 한다.

XHTML에는 버전에 따라, 문서형정의(Document Type Definition : DTD)가 있고, 그 버전에는 어떤 식의 룰로 내용을 기술하는지, 어떤 요소나 속성, 속성값이 지정 가능한 지 등이 정의되어 있다.

XHTML의 문서형 선언은, 다음과 같이 XML 선언의 직후에 기술한다.

<?XML version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<head> </head>
<body> Contents </body>
</html>

문서형 선언의 내용

문서형 선언은 [공개식별자] 와 [시스템식별자]로 구성된다.

  • 공개식별자 : -//W3C//DTD XHTML 1.0 Strict//EN
  • 시스템식별자 : http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

공개식별자 (Formal Public Identifier)는 유니버셜하게 문서형정의를 참조하기 위한 식별자이다. W3C 등의 표준화단체가 정의한 문서형정의를 참조하기 위한 식별자이므로, 문서작성자가 바꿔쓸 수 없다.

시스템 식별자 (System identifier)는 그 문서가 준거하는 문서형을 정의하는 URI로, 예를 들어 아래와 같은 상대 URI를 지정하는 것도 가능하다.

<?XML version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "./DTD/xhtml1-strict.dtd">
<head> </head>
<body> Contents </body>
</html>

또한, 시스템식별자는 HTML에서는 생략가능하나, XHTML 에서는 생략할 수 없다.

어떤 버전에 준거할 것인가

여기서 XHTML의 버전에 대해 자세히 설명하겠다. XHTML에서는 크게 나눠서 XHTML1.0과 XHTML1.1의 두 가지 버전이 있다. 또한, XHTML1.0에는, [Strict], [Transitional], [Frameset]의 세 개가 있다.

어떤 버전(문서형 정의)에 준거해서 작성하느냐에 따라, 문서형선언의 서식이 다음과 같이 달라진다.

[XHTML 1.0 Strict]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
[XHTML 1.0 Transitional]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
[XHTML 1.0 Frameset]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
[XHTML 1.1]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

XHTML1.0의 Strict, Transitional, Frameset 은 각각 HTML4.01의 Strict, Transitional, Frameset 을 이어받은 것이다. XHTML1.1 에서는 Traditional과 Framset은 파기되어 Strict에 상당하는 것 밖에 없기에 문서형선언을 적는 방법은 한 종류 뿐이다.

어떤 버전에 준거할 것인가는, 그 사이트의 목적이나 방향성에 따라 달라진다. 예를 들면, iframe 요소 등 XHTML1.0 Strict 나 XHTML1.1 에서 인정되지 않는 요소를 사용하는 경우에는 XHTML Transitional로 선언할 필요가 있으며, 프레임을 이용하는 경우에는 XHTML Frameset으로 선언할 필요가 있다.

 

네임스페이스와 언어코드

XHTML 문서에서는 html 요소에 네임스페이스(namespace)와 언어코드를 다음과 같이 지정한다.

<?XML version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="Ko" lang="Ko">
<head> </head>
<body> Contents </body>
</html>

xmlns속성

네임스페이스는 xmlns속성으로 지정한다. XHTML에는 [http://www.w3.org/1999/xhtml]이라는 네임스페이스가 주어져 있으므로 이를 값으로 지정한다.

xml:lang 속성과 lang 속성

언어코드는 xml:lang 속성으로 지정한다. 언어코드는 ISO 639 로 규정되어 있으며, 예를 들어 한국어는 [ko], 영어는 [en], 프랑스어는 [fr], 중국어는 [zh] 등이다.

또한, XHTML1.0에서는 후방호환성(오래된 브라우저도 문제없이 표시해, 안정적으로 동작하도록 하는 것) 을 고려하여 lang 속성으로 xml:lang 속성과 같은 값은 지정한다. (XHTML1.1에서는 lang속성자체가 인정되지 않기 때문에 xml:lang 속성만 언어코드로 지정한다.)

댓글 0
댓글을 작성하려면 해주세요.