HVML

Hypervideo Markup Language

The video Element

Last updated:

Contexts

  • As a child of hvml

Content Attributes

  • XML Global Attributes (e.g. xml:id)
  • type

    Required:
    No
    Type:
    xs:string
    Values:
    narrative
    ad
    personal
    historical

Definition

Represents a single theatrical film, TV show episode, advertisement, home movie, news segment, piece of archival footage, animated GIF, or any other motion picture (i.e., visual media with fixed changes along a temporal axis).

Authoring

The type attribute accepts one or more of the following values as a space-separated list:

  • narrative, indicating that the video in question is a fictional film, usually with a distinct story arc, of any length;
  • documentary, indicating that the video in question is an investigative, introspective, contemplative, or otherwise educational film of any length;
  • ad, indicating that the video in question is primarily an advertisement for a product, service, company, or individual, i.e. a commercial. This designation alone is not suitable for videos that merely feature embedded advertisements such as product placement, paid reviews, “ad reads”, or other sponsorships, but are otherwise noncommercial in nature;
  • personal, indicating that the video in question is primarily from the perspective of an individual, family, friend group, or other close association, and may lack serious artistic direction, such as home movies, or “user-generated content” uploaded to a third-party website;
  • historical, indicating that the video in question is pertinent to some aspect of history, such as a news program or segment, or miscellaneous footage belonging to a library, archive, or personal collection.

These values can be combined, in any order, in the following ways to derive additional meanings:

  • narrative documentary: a documentary with fictionalized elements. This does not refer to disputed or exaggerated claims made in investigative journalism, but rather to hybrid fiction–nonfiction, such as a biopic portrayed by actors that also includes interviews with real-life people relating to the story;
  • personal documentary: a self-authored vlog (video blog);
  • personal ad: an advertisement for oneself, such as a political campaign commercial, or a video job application;
  • documentary ad: an advertisement presented as educational content about a particular topic, e.g. “native advertising”;
  • historical ad: a commercial for a defunct product or service, or a commercial that is no longer running;
  • historical personal: a personal video that one has “archived” in order to exclude it or separate it from a list of their recent content in some interface.

When using HVML’s XML serialization in an HTML context, be aware that the User-agent, typically a Web browser, will interpret un-namespaced <video>s to be instances of HTML’s embedded video player element of the same name. This may result in the browser performing unnecessary work, such as populating the tag with extraneous DOM properties.

To minimize the potential for unwanted browser behavior, HTML’s media-specific attributes (as defined by the WHATWG Living Standard) are reserved attributes in HVML, and will throw errors in conformance checkers if present: autoplay, buffered, controls, crossorigin, height, loop, muted, preload, poster, src, width, playsinline, or any other attribute defined therein.

When using HVML’s XML serialization in an XHTML context (i.e., served with Content-Type: application/xhtml+xml), unwanted browser behavior can be avoided merely by setting the appropriate namespace, as in one of the following configurations:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <video>
      <!-- HTML video definition -->
    </video>
    <hvml xmlns="https://hypervideo.tech/hvml#">
      <video>
        <!-- HVML video definition -->
      </video>
    </hvml>
  </body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:hvml="https://hypervideo.tech/hvml#">
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <video>
      <!-- HTML video definition -->
    </video>
    <hvml:hvml>
      <hvml:video>
        <!-- HVML video definition -->
      </hvml:video>
    </hvml:hvml>
  </body>
</html>