make microformats note fit into preceding chapter

This commit is contained in:
Deniz Akşimşek 2023-05-27 17:42:06 +03:00
parent ed2adeed17
commit 5938ca8c3d

View File

@ -504,26 +504,12 @@ another.
With properly built "`thin`" controllers and "`fat`" models, keeping two separate APIs both in sync and yet With properly built "`thin`" controllers and "`fat`" models, keeping two separate APIs both in sync and yet
still evolving separately is not as difficult or as crazy as it might sound. still evolving separately is not as difficult or as crazy as it might sound.
// TODO dz4k: does this content fit here?
// or, cut if you don't recommend using
[.design-note] [.design-note]
.HTML Notes: Microformats .HTML Notes: Microformats
**** ****
In some cases you may want to include machine-readable structured data in HTML. https://microformats.org/[Microformats] is a standard for embedding machine-readable structured data in HTML.
https://microformats.org/[Microformats] is one standard for doing so. It uses classes to mark certain elements as containing information to be extracted,
It uses classes to mark certain elements as containing information to be extracted. with conventions for extracting common properties like name, URL and photo without classes.
The microformats2 standard uses five kinds of classes:
* `h-` classes denote that an element represents a machine-readable entity, e.g., `h-entry`, `h-resume`
* The other prefixes denote that an element represents properties of an enclosing entity:
** `p-` classes are plain text properties, from an element's inner text or `alt` attribute, e.g., `p-name`, `p-category`
** `u-` classes are URL properties, from an element's `href` or `src`, e.g., `u-url`, `u-email`, `u-photo`
** `dt-` classes are date/time properties, from `<time>` elements, e.g., `dt-published`, `dt-updated`
** `e-` classes are embedded markup properties, from an element's inner HTML, e.g., `e-content`, `e-description`
There are also conventions for extracting common properties like name, URL and photo without needing classes for each property.
By adding these classes into the HTML representation of an object, we allow the properties of the object to be recovered from the HTML. For example, this simple HTML: By adding these classes into the HTML representation of an object, we allow the properties of the object to be recovered from the HTML. For example, this simple HTML:
[source,html] [source,html]
@ -533,8 +519,7 @@ By adding these classes into the HTML representation of an object, we allow the
</a> </a>
---- ----
can be parsed into this JSON-like structure: can be parsed into this JSON-like structure by a microformats parser:
// maybe: briefly describe how
[source,json] [source,json]
@ -544,7 +529,6 @@ can be parsed into this JSON-like structure:
"properties": { "properties": {
"name": ["John Doe"], "name": ["John Doe"],
"photo": ["john.jpg"], "photo": ["john.jpg"],
""
"url": ["https://john.example"] "url": ["https://john.example"]
} }
} }
@ -552,9 +536,14 @@ can be parsed into this JSON-like structure:
Using a variety of properties and nested objects, we could mark up every bit of information about a contact, for example, in a machine-readable way. Using a variety of properties and nested objects, we could mark up every bit of information about a contact, for example, in a machine-readable way.
// maybe: rule of thumb for when to use a microformat As explained in the above chapter, trying to use the same mechanism for human and machine interaction is not a good idea.
// Would this be worthwhile for contact.app?
Microformats and the extensibility of HTML can prove useful, but embedding data in HTML is not appropriate for every use case.
Your human-facing and machine-facing interfaces may end up being limited by each other. Your human-facing and machine-facing interfaces may end up being limited by each other.
It's often the best option to define a JSON data API separate from your HTML. If you want to expose domain-specific data and actions to users and developers, a JSON API is a great option.
However, microformats are way easier to adopt.
A protocol or standard that requires websites to implement a JSON API has a high technical barrier.
In comparison, any website can be augmented with microformats simply by adding a few classes.
Other HTML-embedded data formats like microdata, Open Graph are similarly easy to adopt.
This makes microformats useful for cross-website (dare we say _web-scale_) systems like the https://indieweb.org[IndieWeb], which uses it pervasively.
**** ****