< i i n n p u t  i i d = " " q q "  
r e e q u i i r r e d d >
< i i n n p u t  t t y p e e = = " s u u b b m i t t "  v v a a l l u e = = " " S e a a r r c h " " >
< /f o r m m >
Test 
< i n p p u u t  r r e e q u i r r e e d >
in your own browser. Browsers may alter the default appearance
of required fields. For example, this is what a required field looks like in Mozilla Firefox 4.0:
Furthermore, if you aempt to submit the form without filling in the required value, Firefox
will pop up an infobar telling you that the field is mandatory and can not be le blank.
FURTHER READING
FURTHER READING
Specifications and standards:
< i n p p u u t >
types
the 
< i i n p u u t  p p l l a a c e h o o l l d e r r >
aribute
the 
< i i n p u u t  a a u u t t o f o c c u u s >
aribute
the 
< f f o r m  n n o v v a a l i d a a t t e >
aribute
e 
< i i n p u u t  r r e e q q u i r r e e d >
aribute
HTML5 Forms in Mozilla Firefox 4.0+
JavaScript libraries:
Modernizr, an HTML5 detection library
Useful articles:
diveintohtml5.org
A FORM OF MADNESS
Converter pdf to html - Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
converter pdf to html; embed pdf into website
Converter pdf to html - VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
convert pdf to html open source; how to convert pdf to html code
Forward inking Form Validation
is has been “A Form of Madness.” e 
full table of contents has more if you’d like to keep
reading.
DID YOU KNOW?
DID YOU KNOW?
In association with Google Press, O’Reilly is
distributing this book in a variety of formats, including
paper, ePub, Mobi, and DRM-free PDF. e paid
edition is called “HTML5: Up & Running,” and it is
available now. is apter is included in the paid
edition.
If you liked this apter and want to show your
appreciation, you can 
buy “HTML5: Up & Running”
with this affiliate link or 
buy an electronic edition
directly from O’Reilly. You’ll get a book, and I’ll get a
bu. I do not currently accept direct donations.
Copyright MMIX–MMX 
Mark Pilgrim
powered by Google™
Search
diveintohtml5.org
A FORM OF MADNESS
Online Convert PDF to HTML5 files. Best free online PDF html
Our PDF to HTML converter library control is a 100% clean .NET document image solution, which is designed to help .NET developers convert PDF to HTML webpage
convert pdf to html code online; pdf to html converter online
C#: How to Use SDK to Convert Document and Image Using XDoc.
You may use our converter SDK to easily convert PDF, Word, Excel, PowerPoint, Tiff, and Dicom files to raster images like Jpeg, Png, Bmp and Gif.
convert pdf into html email; change pdf to html
You are here: 
Home  
Dive Into HTML5 
10. 
“DISTRIBUTED,”
“DISTRIBUTED,”
“EXTENSIBILITY,”
“EXTENSIBILITY,”
&&
OTHER FANCY WORDS
OTHER FANCY WORDS
show table of contents
DIVING IN
DIVING IN
here are 
over 100 elements in HTML5. Some are 
purely semantic, others are
just containers for scripted APIs. roughout 
the history of HTML, standards
wonks have argued about whi elements should be included in the language.
Should HTML include a 
< f i i g g u r e e >
element? A 
< p p e e r s o o n n >
element? How
about a 
< r r a a n t >
element? Decisions are made, specs are wrien, authors author, implementors
implement, and the web lures ever forward.
Of course, HTML can’t please everyone. No standard can. Some ideas don’t make the cut. For
example, there is no 
< p p e r s s o o n >
element in HTML5. (ere’s no 
< r r a n t >
element either, damn
it!) ere’s nothing stopping you from including a 
< p e r r s s o n >
element in a web page, but 
it
won’t validate
it won’t work consistently across browsers, and it might conflict with future
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
C# Convert: PDF to Word: How to Convert Adobe PDF to Microsoft
After integrating XDoc.Converter for .NET SDK into your C# .NET project, you may directly use the following sample code to have a quick evaluation of PDF to MS
convert pdf to html5; convert pdf to web page online
XDoc.Converter for .NET, Support Documents and Images Conversion
file converter SDK supports various commonly used document and image file formats, including Microsoft Office (2003 and 2007) Word, Excel, PowerPoint, PDF, Tiff
convert pdf fillable form to html; best website to convert pdf to word online
HTML specs if we want to add it later.
Right, so if making up your own elements isn’t the answer, what’s a semantically inclined
web author to do? ere have been aempts to extend previous versions of HTML. e most
popular method is 
microformats, whi uses the 
c l l a s s
and 
r e l
aributes in HTML 4.
Another option is 
RDFa, whi was originally designed to be used in 
XHTML but is now
being ported to HTML as well.
Microformats and RDFa ea have their strengths and weaknesses. ey take radically
different approaes towards the same goal: extending web pages with additional semantics
that are not part of the core HTML language. I don’t intend to turn this apter into a format
flamewar. (at would definitely require a 
< r r a n t >
element!) Instead, I want to focus on a
third option whi is part of, and tightly integrated into, HTML5 itself: microdata.
WHAT IS MICRODATA?
WHAT IS MICRODATA?
Ea word in the following sentence is important, so pay aention.
PROFESSOR MARKUP SAYS
PROFESSOR MARKUP SAYS
Microdata annotates the DOM with scoped name/value pairs
from custom vocabularies.
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
VB.NET PDF Converter Library SDK to convert PDF to other file
generation, PDF content extraction and metadata editing if they integrate this VB.NET PDF converter control with For how to convert PDF to HTML document in
adding pdf to html page; convert pdf to html
C# PDF Converter Library SDK to convert PDF to other file formats
Able to export PDF document to HTML file. Able to create convert PDF to SVG file. Remarkably, this PDF document converter control for C#.NET can
pdf to html conversion; convert pdf into html online
Now what does that mean? Let’s start from the end and work bawards. Microdata centers
around custom vocabularies. ink of “the set of all HTML5 elements” as one vocabulary. is
vocabulary includes elements to represent 
a section or an article, but it doesn’t include
elements to represent a person or an event. If you want to represent a person on a web page,
you’ll need to define your own vocabulary. Microdata lets you do this. Anyone can define a
microdata vocabulary and start embedding custom properties in their own web pages.
e next thing to know about microdata is that it works with name/value pairs. Every
microdata vocabulary defines a set of named properties. For example, a Person vocabulary
could define properties like 
n a m e
and 
p h o t t o
. To include a specific microdata property on
your web page, you provide the property name in a specific place. Depending on where you
declare the property name, microdata has rules about how to extract the property value. (More
on this in the next section.)
Along with named properties, microdata relies heavily on the concept of “scoping.” e
simplest way to think of microdata scoping is to think about the natural parent-ild
relationship of elements in the DOM. e 
< h h t m l >
element usually contains two ildren,
< h e a a d d >
and 
< b b o o d y >
. e 
< b o d y y >
element usually contains multiple ildren, ea of whi
may have ild elements of their own. For example, your page might include an 
< h h 1 1 >
element within an 
< h h g g r o u p p >
element within a 
< h h e a d d e e r >
element within the 
< b o o d d y >
element. A data table might contain 
< t t d d >
within 
< t r >
within 
< t a a b b l e >
(within 
< b b o o d y >
).
Microdata re-uses the hierarical structure of the DOM itself to provide a way to say “all the
properties within this element are taken from this vocabulary.” is allows you to use more
than one microdata vocabulary on the same page. You can even nest microdata vocabularies
within other vocabularies, all by re-using the natural structure of the DOM. (I’ll show multiple
examples of nested vocabularies throughout this apter.)
Now, I’ve already toued on the DOM, but let me elaborate on that. Microdata is about
applying additional semantics to data that’s already visible on your web page. Microdata is
not designed to be a standalone data format. It’s a complement to HTML. As you’ll see in the
next section, microdata works best when you’re already using HTML correctly, but the HTML
vocabulary isn’t quite expressive enough. Microdata is great for fine-tuning the semantics of
data that’s already in the DOM. If the data you’re semanti-fying isn’t in the DOM, you
should step ba and re-evaluate whether microdata is the right solution.
Does this sentence make more sense now? “Microdata annotates the DOM with scoped
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
other industry-leading methods to convert target PDF document to other editable file formats using Visual C# code, such as, PDF to HTML converter assembly, PDF
convert pdf to website; batch convert pdf to html
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
C# PDF - Convert PDF to JPEG in C#.NET. C#.NET PDF to JPEG Converting & Conversion Control. Best and free adobe PDF to jpeg converter SDK for Visual Studio .NET
convert pdf to url online; change pdf to html format
name/value pairs from custom vocabularies.” I hope so. Let’s see it in action.
THE MICRODATA DATA MODEL
THE MICRODATA DATA MODEL
Defining your own microdata vocabulary is easy. First, you need a namespace, whi is just a
URL. e namespace URL could actually point to a working web page, although that’s not
strictly required. Let’s say I want to create a microdata vocabulary that describes a person. If I
own the 
d a a t a - v v o o c a b b u u l a r r y y . o r r g
domain, I’ll use the URL 
h t t p : : / / / d a a t t a -
v o c a a b b u l a a r r y . o o r r g / P P e e r s o o n
as the namespace for my microdata vocabulary. at’s an easy
way to create a globally unique identifier: pi a URL on a domain that you control.
In this vocabulary, I need to define some named properties. Let’s start with three basic
properties:
n a m e
(your full name)
p h o t t o
(a link to a picture of you)
u r l
(a link to a site associated with you, like a weblog or a Google profile)
Some of these properties are URLs, others are plain text. Ea of them lends itself to a natural
form of markup, even before you start thinking about microdata or vocabularies or whatnot.
Imagine that you have a profile page or an “about” page. Your name is probably marked up as
a heading, like an 
< h 1 1 >
element. Your photo is probably an 
< i m g g >
element, since you want
people to see it. And any URLs associated your profile are probably already marked up as
hyperlinks, because you want people to be able to cli them. For the sake of discussion, let’s
say your entire profile is also wrapped in a 
< s e c t t i i o n >
element to separate it from the rest
of the page content. us:
It’s all about me
It’s all about me
< s e c c t t i o n n >
< h 1 > > M M a r k  P P i l l g g r i m m < < / h 1 1 >
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
< p > < < i i m g  s s r c ="h t t t p p : / / / www. . e e xa a m p p l l e . c c o o m / p p h h o t o o . . jp g g " a a l l t t ="[m e  s s m m i i l i n n g g ]"> > < < / p >
< p > < < a  h h r r e e f ="h t t p p : : / / d d i i v e i n n t t o m a a r r k . o o r r g / "> we b b l l o g < < / / a > < < / / p >
< / s e e c c t i o o n n >
Microdata’s data model is name/value pairs. A microdata property name (like 
n a m e
or 
p h h o t o
or 
u r r l
in this example) is always declared on an HTML element. e corresponding property
value is then taken from the element’s DOM. For most HTML elements, the property value is
simply the text content of the element. But there are a handful of exceptions.
WHERE DO MICRODATA PROPERTY VALUES COME FROM?
WHERE DO MICRODATA PROPERTY VALUES COME FROM?
Element
Value
< m e e t t a >
c o n n t t e n t
aribute
< a u u d d i o >
< e m m b b e d >
< i f f r r a m e e >
< i m m g g >
< s o o u u r c e e >
< v i i d d e o >
s r c
aribute
< a >
< a r r e e a >
< l i i n n k >
h r e e f
aribute
< o b b je e c t t >
d a t t a
aribute
< t i i m m e >
d a t t e e t i m m e
aribute
all other elements
text content
“Adding microdata” to your page is a maer of adding a few aributes to the HTML
elements you already have. e first thing you always do is declare whi microdata
vocabulary you’re using, by adding an 
i t e m m t t y p e
aribute. e second thing you always do
is declare the scope of the vocabulary, using an 
i t t e e m s c c o o p e
aribute. In this example, all the
data we want to semanti-fy is in a 
< s e e c c t i o o n n >
element, so we’ll declare the 
i t e m t t y y p e
and
i t e m m s s c o p p e
aributes on the 
< s s e e c t i i o o n >
element.
< s e c c t t i o n  
i t e e m m s c o o p p e  
i t t e m t t y y p e ="h t t t p p : / / d d a a t a - - v v o c a a b b u l a a r r y . o o r r g / P P e e r s o o n n ">
Your name is the first bit of data within the 
< s e c c t t i o n n >
element. It’s wrapped in an 
< h h 1 1 >
element. e 
< h h 1 1 >
element doesn’t have any special processing in the 
HTML5 microdata data
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
model, so it falls under the “all other elements” rule where the microdata property value is
simply the text content of an element. (is would work equally well if your name was
wrapped in a 
< p p >
< d d i i v >
, or 
< s s p p a n >
element.)
< h 1  
i t e m m p p r o p p ="n n a a m m e "> > M M a r k  P P i l l g g r i m < < / / h 1 >
In English, this says “here is the 
n a m e
property of the 
h t t p p : : / / d a a t t a -
v o c a a b b u l a a r r y . o o r r g / P P e e r s o o n
vocabulary, and the value of the property is 
M a r r k  P P i i l l g r i i m
.”
Next up: the 
p h h o o t o
property. is is supposed to be a URL. According to the 
HTML5
microdata data model, the “value” of an 
< i m m g g >
element is its 
s r c
aribute. Hey look, the
URL of your profile photo is already in an 
< i m g  s s r c >
aribute. All you need to do is
declare that the 
< i m g g >
element is the 
p h o t t o
property.
< p > < < i i m g  
i t e m m p p r o p p ="p p h h o o t o "
s r c ="h t t t p p : / / / www. e e xa m m p p l e . c c o o m / p p h h o t o o . . jp g g "
a l t ="[m e  s s m i i l l i n g g ]"> > < < / / p >
In English, this says “here is the 
p h o t t o
property of the 
h t t t p p : / / d d a a t a -
v o c a a b b u l a a r r y . o o r r g / P P e e r s o o n
vocabulary, and the value of the property is
h t t p p : : / / www. e e xa a m p p l l e . c c o o m / p h h o o t o . . jp p g
.
Finally, the 
u r l
property is also a URL. According to the 
HTML5 microdata data model, the
“value” of an 
< a a >
element is its 
h r e f
aribute. And once again, this fits perfectly with your
existing markup. All you need to do is say that your existing 
< a >
element is the 
u r r l
property:
< a  
i t t e m p p r r o p ="u r l l " h h r r e e f ="h t t p p : : / / d i i v v e i n n t t o m a a r r k . o o r r g / "> d i v v e  i i n n t t o  m m a a r r k < / / a a >
In English, this says “here is the 
u r l
property of the 
h t t t p : : / / / d a t t a a -
v o c a a b b u l a a r r y . o o r r g / P P e e r s o o n
vocabulary, and the value of the property is
h t t p p : : / / d d i i v e i i n n t o m m a a r k . . o o r g /
.
Of course, if your markup looks a lile different, that’s not a problem. You can add microdata
properties and values to any HTML markup, even really gnarly 20th-century-era, tables-for-
layout, Oh-God-why-did-I-agree-to-maintain-this markup. While I don’t recommend this kind
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
of markup, it is still common, and you can still add microdata to it.
For the love of God, don’t do this
For the love of God, don’t do this
< TABLE>
< TR> > < < TD> > Na a m e e < < TD> > M M a r k  P P i l g g r r i m
< TR> > < < TD> > Li i n k k < < TD>
< A h h r r e f =# o o n n c c l i c c k k =g o o Ext t e r r n n a l Li n k ()> h t t t t p : / / / / d i v v e e i n t t o o m a r r k k . o r g g / / < / A>
< / TABLE>
For marking up the 
n a a m e
property, just add an 
i t t e e m p r r o o p
aribute on the table cell that
contains the name. Table cells have no special rules in the microdata property value table, so
they get the default value, “the microdata property is the text content.”
< TR> > < < TD> > Na a m e e < < TD 
i t e m m p p r o p p ="n n a m m e e "> M M a a r k  P P i l g g r r i m
Adding the 
u r l
property looks triier. is markup doesn’t use the 
< a >
element properly.
Instead of puing the link target in the 
h r e e f
aribute, it has nothing useful in the 
h r e f
aribute and uses Javascript in the 
o n c c l l i c k
aribute to call a function (not shown) that
extracts the URL and navigates to it. For extra “holy fu, please stop doing that” bonus
points, let’s pretend that the function also opens the link in a tiny popup window with no
scroll bars. Wasn’t the internet fun last century?
Anyway, you can still convert this into a microdata property, you just need to be a lile
creative. Using the 
< a a >
element directly is out of the question. e link target isn’t in the
h r e f
aribute, and there’s no way to override the rule that says “in an 
< a >
element, look for
the microdata property value in the 
h r r e e f
aribute.” But you can add a wrapper element
around the entire mess, and use that to add the 
u r r l
microdata property.
This is what you get for subverting
This is what you get for subverting
HTML
HTML
< TABLE i i t t e m s s c c o p e  i i t e e m m t y p e e ="h h t t t t p : / / / / d a t t a a - v o o c c a b u u l l a r y y . . o r g g / / P e r s s o o n ">
< TR> > < < TD> > Na a m e e < < TD> > M M a r k  P P i l g g r r i m
< TR> > < < TD> > Li i n k k < < TD>
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
< s p a a n  i i t t e e m p r r o o p ="u r l ">
< A h h r r e f =# o o n n c c l i c c k k =g o o Ext t e r r n n a l Li n k ()> h t t t t p : / / / / d i v v e e i n t t o o m a r r k k . o r g g / / < / A>
< / s p p a a n >
< / TABLE>
Since the 
< s s p a n n >
element has no special processing, it uses the default rule, “the microdata
property is the text content.” “Text content” doesn’t mean “all the markup inside this element”
(like you would get with, say, the 
i n n n e e r HTM L
DOM property). It means “just the text,
ma’am.” In this case, 
h t t t p : : / / / d i i v v e i n n t t o m a a r r k . o o r r g /
, the text content of the 
< a >
element
inside the 
< s p a a n n >
element.
To sum up: you can add microdata properties to any markup. If you’re using HTML correctly,
you’ll find it easier to add microdata than if your HTML markup sus, but it can always be
done.
MARKING UP PEOPLE
MARKING UP PEOPLE
By the way, the starter examples in the previous section weren’t completely made up. ere
really is a microdata vocabulary for marking up information about people, and it really is that
easy. Let’s take a closer look.
e easiest way to integrate microdata into a personal website is on your “about” page. You
do have an “about” page, don’t you? If not, you can follow along as I extend 
this sample
“about” page with additional semantics. e final result is here: 
person-plus-microdata.html.
Let’s look at the raw markup first, before any microdata properties have been added:
< s e c c t t i o n n >
< i m g  wi i d d t t h ="204" h h e i i g g h t ="250"
s r c ="h t t t p p : / / / d d i v e e i i n t o o h h t m l 5. o r g g / / e xa a m m p l e e s s / 2000_05_m a a r r k . jp g "
a l t ="[M a a r r k  P P i i l g r r i i m , c c i r c a  2000]">
diveintohtml5.org
“DISTRIBUTED,” “EXTENSIBILITY,” & OTHER FANCY WORDS
Documents you may be interested
Documents you may be interested