HTML: 시맨틱 레이아웃. 의미론이란 무엇이며 HTML과 어떤 관련이 있습니까?

일러스트레이션: 케빈 코넬

번역: 블라드 메르제비치(Vlad Merzhevich)

나는 과감한 예측을 하고 싶다. 당신과 내가 사라진 후에도 HTML은 여전히 ​​존재할 것입니다. 우리 시대의 수십억 개의 아카이브된 페이지뿐만 아니라 살아 숨쉬는 유기체로서. 인터넷 도구, 프로토콜 및 플랫폼을 개발하는 데 너무 많은 노력, 에너지 및 투자가 투입되어 쉽게 폐기될 수 있습니다.

우리의 책임에 집중합시다. 불행하게도, 역사상 우리는 앞으로 수십 년 동안 의사소통에 사용될 문명을 위한 중요한 도구의 개발과 연관되어 있습니다. 따라서 HTML 개선에 전념하거나 진지하게 정신을 바칠 때 오늘날 우리는 광범위한 결정의 결과를 이해해야 합니다.

최근 W3C가 차세대 HTML을 형성하기 위한 노력을 두 배로 늘린 HTML5는 상당한 추진력을 얻었습니다. 이는 HTML 구조뿐만 아니라 구문 분석 모델, 오류 처리, DOM, 리소스 추출 알고리즘, 미디어 콘텐츠, 2D 그래픽, 데이터 템플릿, 보안, 로딩 페이지, 클라이언트 측 데이터 저장 등을 다루는 거대한 프로젝트입니다. .

또한 기사에서 Lachlan Hunt가 부분적으로 다룬 HTML의 구조, 구문 및 의미 체계에 대한 변경 사항도 있습니다.

하지만 이 기사에서는 HTML 의미에만 초점을 맞추겠습니다. 그것은 수년 동안 나에게 관심을 가져왔고 의미론은 HTML의 미래에 근본적으로 중요하다고 믿습니다.

BBC는 최근 편리하고 접근 가능한 약어 템플릿을 위해 프로그램 목록에 사용되는 hCalendar 마이크로포맷을 포기한다고 발표했습니다. 이는 의심할 여지없이 해당 언어용으로 의도된 HTML의 의미론적 기능을 넘어섰다는 것을 나타냅니다. 문서의 의미적 마크업을 강화하는 HTML 요소와 속성이 부족해졌습니다. 기존 HTML 구성을 계속 속이는 경우 의미론적 마크업 언어로서의 HTML에는 근본적인 결함이 있기 때문에 많은 문제가 발생할 것입니다. 의미론은 고정되어 있고 확장할 수 없습니다.

이는 단지 이론적인 문제가 아닙니다. 수십만 명의 개발자가 class 및 id 속성을 사용하여 풍부한 의미 체계 마크업을 만듭니다. 동시에 개발자는 기존 스키마에서 가져온 값보다는 자신이 구성한 특수 사전을 거의 항상 사용합니다. 이것은 기껏해야 의사 의미론입니다.

인터넷의 많은 페이지에서는 마이크로포맷을 사용하여 사용 가능한 열악한 HTML 요소 및 속성 세트보다 더 구조화된 의미를 추가합니다. 이 경우 클래스 속성에 사용되는 값은 합의 어휘에서 설정되며 때로는 vCard와 같은 다른 표준에서 가져오고 때로는 고정된 표준이 없는(hReview에서와 같이) 새로 생성된 어휘에서 가져옵니다.

확장 가능한 의미론

해결해야 할 실제 문제가 있습니다. 개발자가 마크업에 의사 의미론보다 더 의미 있는 의미론을 추가할 수 있도록 명확하고 명확하게 허용하는 HTML 메커니즘이 필요합니다. 이것은 아마도 HTML5 프로젝트의 중요한 목표 중 하나일 것입니다.

그러나 어떤 솔루션이든 한계가 있기 때문에 그러한 메커니즘을 고안하는 것은 그리 쉽지 않습니다. 상당한 제한 사항이 있으며 그 중 가장 큰 것은 이전 버전과의 호환성일 것입니다. 이 솔루션은 현재 사용 중이며 앞으로도 수년 동안 사용될 수억 대의 장치를 중단해서는 안 됩니다. 이전 버전과의 호환성이 없는 솔루션은 독자를 잃을까 봐 개발자가 널리 수용하지 못할 것입니다. 그러한 결정은 금방 시들게 됩니다.

솔루션은 향후 버전과도 호환되어야 합니다. 미래의 브라우저에서 작동해야 한다는 의미는 아닙니다. 이는 브라우저 개발자의 책임이지만 확장 가능해야 합니다. 우리는 상상할 수 있거나 상상할 수 없는 미래의 의미론적 요구 사항을 모두 해결하기 위해 현재 개발되고 있는 단일 솔루션을 기대할 수 없습니다. 우리는 증가하는 요구 사항을 충족할 수 있는 솔루션을 설계할 수 있습니다.

두 가지 제한 사항이 함께 사용되는 것은 정말 큰 문제입니다. 그러나 수십 년 동안 주요 반복이 반복되고 커뮤니케이션을 위한 글로벌 플랫폼으로서의 중요성이 가장 중요한 언어의 맥락에서 이러한 과제는 충족되어야 합니다.

그렇다면 HTML5는 이 문제를 어떻게 해결합니까? HTML5에는 여러 가지 새로운 요소가 도입되었으며 그 중 일부는 "구조적" 요소입니다.

,