웹표준에서 HTML이 아닌 XHTML을 선택하나
또한 아래와 같은 큰 특징들이 있다.
1. 빠른 데이터 처리와 안정적 브라우져 동작
2. 데이터 재 사용과 정보 공유 촉진
3. 네임스페이스 이용과 다양한 기기 대응
웹표준에서 말하는 기본적인 철학이 구조와 동작, 표현의 분리이다.
아래 소스는 IE7, FF2에서 테스트 되었다.
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Structure와 Behavor의 분리</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="onload.js"></script>
<script type="text/javascript">
//<![CDATA[
// window.onload 에 함수를 등록한다.
addOnLoadListener(addCountryEventListener);
/*
* 지정된 객체의 이벤트를 등록한다.
* 참조: Document Object Model (DOM) Level 2 Events Specification
* http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/Overview.html
*/
function addCountryEventListener() {
var country = document.getElementById('country');
if (country.addEventListener) {
// IE가 아닌 경우
country.addEventListener("change", setCountry, false);
} else if (country.attachEvent) {
// IE의 경우
country.attachEvent("onchange", setCountry);
}
}
function setCountry(e) {
if (!e) var e = window.event;
// IE의 경우 this 오브젝트를 사용할 수 없음.
var tg = (window.event) ? e.srcElement : e.target;
// IE의 경우 option value를 생략한 경우 선택한 값이 없으나,
// FF의 경우 데이터를 가져옴.
document.getElementById('form1').selectedCountry.value = tg.options[tg.selectedIndex].value;
}
//]]>
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<dl>
<dt>Select Country</dt>
<dd>
<select name="country" id="country">
<option value="Korea">Korea</option>
<option value="France">France</option>
<option value="German">German</option>
<option value="Italy">Italy</option>
</select>
</dd>
<dt>Selected Country</dt>
<dd>
<input type="text" name="selectedCountry" id="selectedCountry" />
</dd>
</dl>
</form>
</body>
</html>
웹 페이지를 작성하다보면 BODY 내에 CSS를 정의하는 경우가 많다.
페이지를 여러개로 쪼개는 경우 이런 일이 발생할 소지가 꽤 끄다고 할 수 있다.
하지만, 브라우져의 경우 본문을 파싱하다 정의된 CSS를 만나면 처음부터 다시 파싱한다. (어라 CSS정의가 또 있네? 내가 빼먹은게 있나?)
이럴경우 페이지내의 컨텐츠가 많다면 당연 로딩속도가 느려지게 된다. 많으면 많을 수록 더욱 느려지는 건 당연지사...
아래의 예는 P 태그를 바디 안에서 다시 정의했다. 이경우 전에 나온 P 태그 또한 동일한 스타일 시트가 적용되는 것을 볼 수 있다.
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSS 파싱</title>
<style type="text/css">
p {
font: 2em "Verdana, Arial, Helvetica, sans-serif" bold;
}
</style>
</head>
<body>
<p>first paragraph</p>
<style type="text/css">
p { border: 1px solid #00F; }
</style>
<p>second paragraph</p>
</body>
</html>