The semantics of mediaobject
Norm Tovey-Walsh <[email protected]> Wed, 05 Apr 2023 17:27:33 +0100
| Newsgroups | gmane.text.docbook.misc |
|---|---|
| Message-ID | <[email protected]> |
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Hello world,
The description of mediaobject states:
This element contains a set of alternative =E2=80=9Cmedia objects.=E2=80=
=9D Exactly
one object will be selected and rendered. =E2=80=A6 Under no circumstances
should more than one object in a mediaobject be used or presented at
the same time.
Bearing in mind that this markup was invented 15 or 20 years ago, long
before any (widely used) web browser offered anything sophisticated in
the way of fallback, we anticipated that markup like this:
<mediaobject>
<videoobject>=E2=80=A6</videoobject>
<imageobject>=E2=80=A6</imageobject>
<textobject>=E2=80=A6</textobject>
</mediaobject>
would be intepreted along the following lines: =E2=80=9C=E2=80=A6 a mediaob=
ject might
contain a video, a high-resolution image, a low-resolution image, a long
text description, and a short text description. In a =E2=80=98high-end=E2=
=80=99 online
system, the video is used. For print publishing, the high-resolution
image is used. For other online systems, either the high- or the
low-resolution image is used, possibly including the short text
description as the online alternative. In a text-only environment,
either the long or the short text description is used.=E2=80=9D
<aside>I observe that =E2=80=9Cpossibly including the short text=E2=80=9D i=
s, by a very
narrow reading, a violation of the semantics we=E2=80=99ve already
asserted.</aside>
Starting in V5.1 we allow more than one *data element in a *object
element[1] with the semantics that the downstream processor will pick
one. So now you can do:
<mediaobject>
<videoobject>
<videodata type=3D"video/mp4" =E2=80=A6/>
<videodata type=3D"video/webm" =E2=80=A6/>
</videoobject>
<imageobject>=E2=80=A6</imageobject>
<textobject>=E2=80=A6</textobject>
</mediaobject>
And let the browser decide whether it wants to render MP4 or WebM.
Trouble is, you can=E2=80=99t put imagedata in the videoobject wrapper, so
there=E2=80=99s no way to fallback to a still image. We could fix this by
changing videoobject (and audioobject) to allow imageobject, but at that
point, we might as well do away with the various flavors and just have
one wrapper. (That=E2=80=99s probably what we=E2=80=99d do today, if we wer=
e starting
over.)
Rather than make the markup even more complicated, I=E2=80=99m tempted to s=
quint
really hard at the semantics and try to persuade you that selecting
multiple objects from the same mediaobject is not a violation of the
semantics if the rendering system will only render one of them.
In other words, I want a license to cheat and say that I can render that
example above in HTML5 as a video element containing three sources, two
videos and an image. What say you?
Be seeing you,
norm
[1] But the content model of imageobject weirdly forbids you from mixing
SVG and MathML and other formats. What is that about?
=2D-
Norm Tovey-Walsh <[email protected]>
https://norm.tovey-walsh.com/
> Advancement is powered by the dynamic interaction of theory and
> practice.
--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQSEJUqRvjpp8yLt8uKDEiZHbwv9OwUCZC2mEAAKCRCDEiZHbwv9
OzVuAP95dpFOcUj7XF+YYyeqSh7+t6Jenl/vCi+V6v+rUEvlSwD8DRq2k4BnLyuS
0rRlMCxsYTQ+nLJkBwXzVjZqNnMydQI=
=Dz8O
-----END PGP SIGNATURE-----
--=-=-=--