This is a rough sketch for a food menu microformat that I first suggested on the microformats irc channel in late . Following that suggestion, I added several ideas to a newly created wiki page devoted to menu brainstorming. I then decided to try out some of those ideas by marking up web pages with food menus, which meant I had to come with names for the root menu and its properties. The proposal in this article is a result of that effort.
The class h-x-menu is the proposed root class name that indicates the presense of an h-x-menu. It can also appear as a nested property to represent menu sections. See the menu section property.
name of the menu, e.g., breakfast, dinner, etc.;
or menu type, e.g., à la carte or prix fixe menu;
or, in a
that is a nested
h-x-menu, name of the menu section, e.g., appetizers, main dishes, desserts, beverages; or perhaps brunch, dinner, etc.
restaurant, vendor, or other organization or person
selling products listed on the menu;
can be a nested
h-card; see h-card
menu item, e.g., an individual appetizer, dessert,
can be an embedded
h-product, which would allow product details like price, photo, or description; see h-product
menu section; can (should? must?) be a nested
h-x-menuwith its own:
p-name, e.g. breakfast, lunch, dinner (for a menu divided by meal); or appetizers, main dishes, desserts (for a menu divided by course); or pasta, meat, fish (for a menu divided by primary ingredient); etc.
list of one or more
h-x-menuas deep as needed to represent a food menu
The root and property names follow microformats2 design patterns:
re-used names and properties
p-name is re-used from a number of microformats, including h-event and h-recipe.
h-card and h-product, which appear as nested types, are established microformats.
new names and properties
There are several new names, all designated as
experimental by the inclusion of an
h-x-menu instance should have only
p-name and one
But note that
h-x-menu instances to
represent menu sections, each of which can have
In principle, a nested
could also include an additional
p-x-seller, though that could be
discouraged. Or perhaps that could prove useful
if one part of a food menu is sold by a
person or company independent of the seller specified
in the root
h-x-menu instance should (must?) contain at
p-x-product, but can include more
I have created several demo
using actual food menus from two restaurants that I
used to work for, shortened and slightly modified
for demonstration purposes.