Structure and Semantics
Explore how HTML5 semantic elements enhance the structure and meaning of web pages. Understand their benefits for readability, maintainability, search engine ranking, and how they enable dynamic content tools.
HTML5 changes this ancient plight we discussed earlier with the <div> tag significantly; it adds new semantic elements to the markup, which provide the missing meaning of the embedded content.
The Exercise below shows the skeleton of the same page of the article as drafted in Listing: Defining the <div> tag in a webpage, but it uses new semantic elements.
Listing: The skeleton of an article with HTML5
<!DOCTYPE html>
<html>
<head>
<title>New Style Article</title>
<style>
body {
width: 720px;
margin-left: 16px;
font-family: Verdana, Arial, sans-serif;
}
header {
background-color: deepskyblue;
padding: 2px 16px;
}
h1 {
color: white;
}
.byLine {
color: white;
font-style: italic;
}
.mainContent {
background-color: aliceblue;
padding: 4px 16px;
}
.abstract {
font-size: 0.9em;
font-style: italic;
color: navy;
}
h2 {
color: navy;
border-bottom: 4px dotted cornflowerblue;
}
footer {
background-color: cornflowerblue;
padding: 1px 16px;
}
footer>p {
color: white;
font-size: 0.8em;
}
</style>
</head>
<body>
<article>
<header>
<h1>Visual Studio Platform and Extensibility</h1>
<p class="byLine">by Istvan Novak</p>
</header>
<div class="mainContent">
<p>
<span class="abstract">
Now there is a rapidly growing community,
the Visual Studio Ecosystem behind Visual Studio.
With any idea, imaginings, issues, or questions,
you can turn to other community members and
leverage the knowledge they have. Welcome to
the world of VSX!
</span>
</p>
<section>
<h2>Motivation</h2>
<p>
As a .NET architect and developer I cannot imagine
my everyday work without Visual Studio. I was
always in a strange excitement when waiting for
a new CTP, Beta or RTM of Visual Studio because
I always expected some great new features with
every release. During the years I have bought a
few third-party add-ins and utilities for Visual
Studio to make my development tasks easier and
even created small add-ins to produce some useful
piece of code. I knew that Visual Studio was
extensible; I downloaded the SDKs and tried to
get familiar with those hundreds of extensibility
interfaces. However, due to lack of good
documentation I often got frustrated.
</p>
</section>
<section>
<h2>Visual Studio: Extensible Platform</h2>
<p>
Hearing the word "extensibility"
a developer always starts to think "
some API allowing extra functionality to be
added to a product". More or less,
I can agree with this definition in the case
of Visual Studio. In this part I tell you how
I understand Visual Studio extensibility, and
what are the ways we can add functionality. Because
I started learning this story with the release of
Visual Studio 2008, I put the focus on that version.
</p>
</section>
<section>
<h2>Summary</h2>
<p>
Pellentesque porttitor, libero eu mattis pulvinar,
urna dui scelerisque sapien, vitae varius sapien
urna at odio. Fusce vel neque non massa varius
mattis ut nec.
</p>
</section>
</div>
</article>
<footer>
<p>
Full article published in CODE Magazine
in April, 2008.</p>
</footer>
</body>
</html>The beauty of semantics in our code
Without knowing anything about these new elements, you can intuitively understand the structure of the document: it contains an article that is composed from a <header> tag and a number of <section> tags; it also has a <footer> tag.
Comparing the two code listings (the old-school style with HTML5), you can easily state that the second one (HTML5 style) is easier to read, and is easier to maintain.
The beauty of semantics in search engines and web page ranks
If you think about how a search engine works, you can imagine that this information helps a lot to separate the more important information in this page from the less important. For example, an occurrence of a certain word in the header may have a higher rank than the same word in a section, or in a footer.
Semantic elements may empower tools that analyze or change the page on-the-fly. For example, you can generate an automatic navigation bar for the page that displays the structure of sections. The great thing is, that you can even create a library that prepares this structure and automatically attaches it to a page. Third parties can load your library and generate the content structure for their own pages.
HTML5 defines nine semantic elements that behave exactly like the good old <div> tag but add some extra meaning to your pages.
These elements are summarized in the table below:
Semantic elements of page structure
📜NOTE: There are a few more semantic tags that are related to text elements. For example, the
<mark>and<wbr>tags. Those are inline elements and are not the semantic extensions of<div>by any means.
These elements behave exactly like <div>. They only enclose a markup block and provide a logical container that can be used to apply formatting (through styling), or to add behavior by means of a script language (JavaScript).