MML - Mail Markup Language

  • The Problems
  • The Solutions
  • Semantics
  • Downloads
  • Change Log
  • About This Site
  • External Links
  • Manifesto

Current version: v1.1

Tag List

08 November 2008

The information supplied here is taken verbatim from the MML specification. In the event that this tag list is in conflict with the specification the specification should be presumed correct. All tags, elements, mentioned below are to be assumed as required within their defined usage unless stated otherwise. Optional, means that an element may occur 1 or 0 times. The text, may occur more than once, indicates the element must occur at least once unless optional is also indicated.

  • Header Tags
  • Markup Attributes
  • Markup Element Groups
  • Markup Attribute Groups
  • Markup Tag List

Header Tags

<mail>
The root element of MML is the tag <mail>. This tag serves only three purposes. First, the tag establishes the document as a MML document conforming to the mail.xsd schema. Second, the tag serves as a container of <session> tags. Third, the tag establishes important namespace information. The root element serves no further purpose.
<session>
The session tag contains all information to represent an instance of communication including markup and header information. Child Tags:
  • <address>
  • <attachments> (optional)
  • <subject>
  • <presentation> (optional)
  • <source> or <plain-text> or <markup>
Attributes:
language (optional)
The optional language attribute allows a session author to describe the majority language of the document, and has a default value is "EN".
time-stamp
A time-stamp attribute is REQUIRED for each <session> tag. The value of this time-stamp must be based upon the session author's system clock. This value must be written by the MML processor between the moment the session author submits the document for transmission and the actual transmission of the document. If a value for the time-stamp attribute is supplied by the author the MML processor MUST write over with the correct value. It is absolutely essential that this be executed effectively as a tool to establish nonrepudiation.
<address>
The address tag is a high level tag designed to store child tags containing email address information. Child Tags:
  • <to> (may occur more than once)
  • <copy> (optional and may occur more than once)
  • <blind-copy> (optional and may occur more than once)
  • <reply-to>
  • <from>
<to>
<copy>
<blind-copy>
<from>
The <to>, <copy>, <blind-copy>, and <from> are identical in their syntax. They only differ in their use by the MML processor. These tags store only the value of a properly formed email address. These tags may contain the optional attributes of alias and public-key. Attributes:
alias
The alias is designed to contain a value that is a more human readable representation of an email address, such as a person's name.
public-key
The public-key attribute is intended to store text characters that represent a hashed public-key for asymmetric encryption.
<reply-to>
The <reply-to> tag is identical to the <from> tag except that it may have a value of no-reply in addition to an email address. This tag is used to set an address for deflecting email replys from the address used to send the email or to establish an alternate destination for receiving replies. Attributes:
  • alias
  • public-key
<attachments>
The <attachments> tag is a high level tag for specifying file(s) to be attached to the document. Attached files are not intended for processing in the message body. This tag has two children of which only one MUST occur and both may occur as many times as needed. Child Tags:
  • <collection> and/or <file> (may occur more than once)
<collection>
The <collection> tag is intended to serve as a collection of multiple files of the same specified type. Child Tags:
  • <collection-name>
  • <collection-file> (may occur more than once)
  • <collection-type>
  • <collection-description>
<collection-name>
<collection-name> tag is a required child of <collection>. This may be any string value on a single line. The intent of this tag is to provide a simple name or label for the attached collection.
<collection-file>
<collection-file> tag stores the file name of a particular file in a collection. This tag MUST exist for each file that is to exist in the collection.
<collection-type>
The <collection-type> tag is a mime-type complex-type tag as specified in mime.xsd. The value provided for this tag MUST represent every file in the collection. This tag is optional. If this tag is not present the files present in the collection MUST NOT be processed by the MML processor. MML processors are not REQUIRED to process attached collections.
<collection-description>
This required tag exists to specify a description of the collection. Examples of content for this tag MAY be examples of intended use, explanations, file ownership, origin information, and so forth.
<file>
The <file> tag is intended to serve as a single attached file. Child Tags:
  • <file-name>
  • <file-type>
  • <file-description>
<file-name>
<file-name> tag is a required child of <file>. The value for this tag MUST be a non-colonized name. This tag represents the name of the file being attached.
<file-type>
This tag is of type mime-type. The attached file MUST be processed according to the value supplied in this tag, or it MUST NOT be processed by a MML processor. MML processors are not required to process attached files.
<file-description>
This tag allows a session author to enter any normalized string value that describes the attached file. This tag is REQUIRED.
<subject>
The <subject> tag value must be a normalized string. This required tag sets the subject of the document session. This tag is equivalent to the subject of traditional email.
<presentation>
All presentation, aside from MML default presentation, is set for a session in this high level tag. This tag is nothing more than a container for its one child element that may occur more than once. Child Tags:
  • <stylesheet> (may occur more than once)
<stylesheet>
Each <stylesheet> tag represents a single stylesheet reference. Each <stylesheet> tag must contain a URI as its value. Attributes:
media
This optional attribute allows authors to select various output media for processing of stylesheets.
style-namespace
This required attribute associates a name value with a stylesheet.
style-type
This required attribute accepts one of three values: application/xml, text/xsl, or text/css.
<source>
The <source> tag is one of three methods of creating the message body. The intent of this tag is to allow an external resource to act as the message body. There is no requirement for a MML processor to process any external resource, so the content established by the <source> tag may not always be communicated. Child Tags:
  • <source-uri>
  • <source-type>
<source-uri>
This tag MUST only contain a URI of the requested resource that is to act as the body of the session.
<source-type>
This tag is of element type mime-type. The type determines how or if the external resource described in <source-uri> will be processed by the document's destination.
<plain-text>
This tag is the second of the three methods for communicating the body of the session. This tag MUST contain only plain text. Code MUST NOT be processed in this tag. The intent of this tag is to allow session authors to communicate using text without interference to the processing of that content. Presentation MAY be applied to <plain-text> content if the MML processor so allows and a stylesheet is provided.
<markup>
This tag allows the use of MML to describe and organize content. This is the advised method of communicating content in MML.

Markup Attribute Groups

Core Attributes
The "core attributes" are applied to nearly every element in the markup section. Use of attributes from this attribute group is optional.
  • id
  • title
  • style
  • role
Core Attributes Plus URI
The core attributes plus uri group is literally the core attributes group with the added uri attribute. It was necessary to specify these two groups separately because many elements require a URI and many MUST NOT receive a URI. Use of attributes from this group is optional.
  • id
  • title
  • style
  • role
  • uri
Internationalization Attributes
The internationalization attributes exist only to alter the order in which text is rendered. This is not a presentation issue of altering how text appears, but how it appears to work to the computer for the benefit of assistive technologies and other languages. Use of attributes from this group is optional.
  • direction
  • orientation
  • wrap
  • section-langauge
Cell Attributes
The "cell attributes" group is a set of attributes specific to table cell elements.
  • span-column
  • span-row

Markup Attributes

id
This attribute exists to assign a unique identification to an element. The value for this attribute must contain only lowercase alpha characters, uppercase alpha characters, and/or numbers. The value MUST NOT contain any other characters including whitespace. This attribute is intended to create a unique hook to a particular element for MML processor specific behavior or presentation. There are some elements that exist as a pair set and require the id attribute to refer to each other.
title
The title attribute is intended to supply additional content to an element beyond its contained text. The value for this attribute must be whitespace collapsed text. This attribute is supplied for its semantic and accessibility benefits.
style
This attribute exists to reference a reusable stylesheet property. The value for this attribute must be a set of lowercase alpha characters, uppercase alpha characters, and/or numbers plus a colon (:) plus lowercase alpha characters, uppercase alpha characters, and/or numbers. The value before the colon MUST represent the value of any supplied style-namespace attribute of the corresponding <stylesheet> element. This tells the MML processor which stylesheet the style reference is referring to. The value after the color must represent some value defined in the stylesheet, such as a CSS class name. An example is: namespace:CSSclass09.
role
This attribute is intended to allow for specific semantic redefinition of any element where its use is allowed. If a session author had the ability to rename a tag to something more semantically specific that new name is the value that SHOULD fill the role attribute. This attribute is expected to offer significantly expanded utility in future versions of MML. The WAI-ARIA technology will be utilized with this attribute as well as some more advanced semantic processing when more advanced semantic conventions become commonly adopted standards.
uri
This attribute MUST contain only a URI value. Use of this attribute is equivalent to a webpage hyperlink.
direction
The direction Attribute determines which direction the text is to flow as it is typed. The default value is left to right if orientation has a value of horizontal or top to bottom if orientation has a value of vertical. The acceptable values are tl, which indicates starting from the top or left, or br, which indicates starting from the bottom or right.
orientation
This attribute determines whether text characters render in a vertical or horizontal manner. The acceptable values are horizontal or vertical. Horizontal is the default value.
wrap
This attribute determines how lines of text are rendered to the page. The acceptable values for this attribute are standard, reverse or none. A value of standard does nothing different and is the default value. The value reverse MUST force text render opposite of its standard behavior. Assuming direction and orientation are at default standard behavior is to wrap a line of text below the prior existing text. Under those conditions a value of reverse MUST force the line of text to wrap above the prior existing line of text. A value of none forces the text to not wrap. Under the condition that non-wrapping text is wider or taller than its container the container MUST stretch and the page must scroll to keep the text visible legible so long as there are not presentation specifications to the contrary.
section-language
The attribute section-language specifies the language of a particular section, container, or element in the <markup> section. This is absolutely necessary to alert readers and semantic devices that the language has changed from the default specified language. The values for this attribute MUST be a two digit XML language code. The value of this attribute MUST default to the value of the language attribute of the <session> tag.
span-column
This attribute allows a <table-cell> or <head-cell> to occupy more than one column in a table. The values for this attribute MUST be a positive integer. The default value is "1".
span-row
The attribute span-row allows a <table-cell> or <head-cell> to occupy more than one row in a table. The values for this attribute MUST be a positive integer. The default value is "1".
refer
This attribute is a reference to the value of an id attribute supplied on another element of the same <markup> section. If the value of this attribute does not match an exist id attribute value the document MUST NOT validate.
scope
This attribute is used in table header cells to determine which table cells the header is providing a heading for. The values for this attribute MUST be: column, row, group-column, or group-row. The value column dictates that a header cell is providing a heading for only the first column of cells the header cell occupies. The value "row" dictates that a header cell is providing a heading for only the first row of cells the header cell occupies. A value of group-column dictates that a header cell provides a heading for all cells in all columns that it occupies. The value group-row dictates the header cell is providing a heading for all cells in all rows it occupies.
long-form
This attribute MUST serve to represent the expanded text that is described by the <short> element. An example is: <short long-form="Mail Markup Language">MML</short>.

Markup Element Groups

Inline Tags
Inline elements are not structural elements. These elements MUST exist in a simple-block container. Inline elements are intended to describe text content, supply additional meta-data, or apply more specific presentation. In addition to the following elements form controls defined by the XFORMS standard are also considered inline elements.
  • <short>
  • <button>
  • <cite>
  • <emphasis>
  • <identifier>
  • <quote>
  • <format>
  • <strong>
  • <title>
Simple Block Group
A simple-block is a tag that is capable of containing text and inline elements, but is not capable of containing other simple-blocks or complex-blocks.
  • <block-code>
  • <block-quote>
  • <citation>
  • <heading>
  • <object>
  • <paragraph>
  • <separator>
Complex Block Group
A complex-block is a tag that is capable of containing of either simple-blocks or simple-blocks plus other complex-blocks. Complex-blocks are not capable of containing text content of inline elements. These following tags are the high level complex-blocks.
  • <define-list>
  • <navigation-list>
  • <order-list>
  • <unorder-list>
  • <table>
  • <section>
  • <form>

Markup Tag List

<block-code>
The block code simple block is intended to convey and describe code. The contents of this container must not directly contain XML reserved characters. An XML processor cannot be told to not process characters that construct its syntax. These reserved characters can be used if they are escaped with a character entity reference. The reserved characters and their corresponding character entity references are:
This table represents XML reserved characters.
Character Hex Name
< &#60; &lt;
> &#62; &gt;
& &#38; &amp;
" &#34; &quot;
' &39; &apos;
Child Tags
  • Text and optional Inline Elements
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<block-quote>
A block quote is a large quotation that MAY span several statements. This element can contain text and any number of inline elements. Child Tags
  • Text and optional Inline Elements
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<citation>
A citation is a descriptive reference to a piece of information used in content by a session author. The information reference by the <citation> tag automatically points to the content that requires it by use of a required id attribute, which is referred to by the inline tag <cite>. This element contains text and any number of inline elements. Child Tags
  • Text and optional Inline Elements
Attributes:
  • id
  • title (optional)
  • style (optional)
  • role (optional)
  • Internationalization Attribute Group
<heading>
A heading is a short block of text that describes the content that is to follow. The <heading> tag MUST contain text and MAY contain 0 or more inline elements. Child Tags
  • Text and optional Inline Elements
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<object>
An object is any external resource that is intended to be processed among the content of the message body, such as an image or video. Objects have two required child tags and are intended to contain text content. It is important that an object contain text content that describes its resource. There is no requirement for MML processors to process any external resource. If the resource does fail to process the text contained by the object MUST display. Child Tags
  • <object-text>
  • <object-uri>
  • <object-type>
  • Inline Elements
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<object-text>
Object text is the alternative text content that is to be rendered as content if the object cannot be resolved or processed.
<object-uri>
This element MUST only contain a URI value and that URI MUST point to the location of a resource to appear in the message body. This element allows no child elements or attributes.
<object-type>
This element is of type mime-type. The object pointed to by the sibling <object-uri> tag MUST be processed only according to the type specified by this tag.
<paragraph>
This element is the standard generic container of text and inline elements in a MML document. This element represents a paragraph and text is most typically grouped in paragraphs. Child Tags
  • Text and optional Inline Elements
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<separator>
This element is intended for semantic and structural purposes only. Use of this element indicates a structural obstruction in the flow or organization of content. This element MAY contain text, which should indicate or explain the nature or reasoning of separation mandated by use of this element. Child Tags
  • Text and optional Inline Elements
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<short>
This inline element describes text that is a short-hand value, such as an abbreviation or acronym. Attributes:
  • long-form
  • Core Attributes Plus URI Group
<button>
This element is primarily for interacting with forms. This version of MML does not allow for client-side scripting, the use of a button is limited, although a button MAY be able to interact with media that performs its own internal scripting, such as Flash media. Attributes:
  • refer (optional)
  • Core Attributes Plus URI Group
<cite>
The <cite> tag is intended to contain text begging a citation. The refer attribute is required as it MUST point to the id attribute of a <citation> in the same <markup> section of the document. Attributes:
  • refer
  • Core Attributes Group
<emphasis>
This tag indicates the text it contains is important. Attributes:
  • Core Attributes Plus URI Group
<identifier>
This element is intended to provide a text label that describes some other element. This element has a required attribute of refer so that it may refer to the id of the element it is attempting to describe. Attributes:
  • refer
  • Core Attributes Plus URI Group
<quote>
This element indicates the content it contains is a quotation. Attributes:
  • Core Attributes Plus URI Group
<format>
The format tag is a special tag. This is the only tag in the entire MML tag set that is deliberately intended to provide no semantic data. This tag is available to provide access to the core attributes without imposing semantic considerations. The fear is that a session author MAY need to apply style or a uri attribute to some text that is otherwise no different than the text around it. This is also the only inline tag that MAY contain a child tag. Child Tags:
  • format (optional)
Attributes:
  • Core Attributes Plus URI Group
<strong>
This tag indicates the content it wraps is loud or noticeable. Attributes:
  • Core Attributes Plus URI Group
<title>
This element indicates either a person's official title or the title of a work. Attributes:
  • Core Attributes Plus URI Group
<define-list>
This element is intended to establish a list of definitions by matching any number of defining terms to any number of definitions. This element contains only one child element, but that element may be used more than once. Child Tags
  • <define-item> (may occur more than once)
<define-item>
The <define-item> tag represents a single defining instance. The associations draw by the child tags are as follows: multiple defining terms mapped to a single definition, a single term mapped against multiple definitions, or multiple terms that commonly share multiple definitions. As a result of these three possible associations at least one of each child element must occur. Child Tags
  • <define-term> (may occur more than once)
  • <definition> (may occur more than once)
Attributes:
  • Core Attributes Group
<define-term>
This tag is intended to contain a single term, phrase, or clause to be defined. The value for this tag must be whitespace collapsed text. Attributes:
  • Core Attributes Plus URI Group
  • Internationalization Attribute Group
<definition>
This tag is intended to contain the definition text that defines the associated terms. The value for this tag can be text and inline elements. Child Tags
  • Inline Elements
Attributes:
  • Core Attributes Plus URI Group
  • Internationalization Attribute Group
<navigation-list>
The <navigation-list> tag establishes a list of items that exist to either direct traffic or create a menu of URIs. This tag allows for either a heading or a set of descriptive text and at least one list child. Child Tags
  • <heading> or <identifier> (optional)
  • <navigation-item> (may occur more than once)
Attributes:
  • Core Attributes Group
<navigation-item>
This element is a single instance of navigation in a list of navigation choices. This element may contain either an object for navigation or text for navigation as determined by its child tags. A uri attribute is required on this element. Child Tags
  • <navigation-object> or <navigation-text>
Attributes:
  • Core Attributes Group
  • uri
<navigation-object>
The <navigation-object> is a standard <object> that is modified to not allow use of the uri attribute. This tag SHOULD only be used if the focus of navigation for the <navigation-item> of concern is an external resource expected to be processed into the content of the message body. It is important that an object contain text content that describes its resource. There is no requirement for MML processors to process any external resource. If the resource does fail to process the text contained by the object MUST display. Child Tags
  • <object-text>
  • <object-uri>
  • <object-type>
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<navigation-text>
The content of this element is text and whitespace that is the focus of navigation. This tag has no child elements. Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<order-list>
An ordered list is a list where each item in that list is enumerated in the meta-data. Whether or not this enumeration appears is to a human reader is strictly a presentation concern. This element is allowed descriptive text in the form of a <heading> or identifier> child. Each occurs in the list MUST exist in the <list-item> child. Child Tags
  • <heading> or <identifier> (optional)
  • <list-item> (may occur more than once)
Attributes:
  • Core Attributes Group
<unorder-list>
An unordered list is nearly identical to the <order-list> element except that list items are not enumerated. This means there is no automated means of uniquely identifying list items. Child Tags
  • <heading> or <identifier> (optional)
  • <list-item> (may occur more than once)
Attributes:
  • Core Attributes Group
<list-item>
This element represents a single listed instantiation in a either an ordered or unordered list. This element may contain a single simple block element or text plus 0 or more inline elements. Child Tags
  • Simple Block Element or Text with optional Inline Tags
Attributes:
  • Core Attributes Group
  • Internationalization Attribute Group
<form>
The <form> tag is the high level parent container of a form. A form allows organized controls upon input and submission of information in a method different than a standard email reply. Child Tags
  • <model> (Defined in XForms)
  • <form-body>
<form-body>
The <form-body> element is intended to contain all the form controls that a user could interact with plus other MML elements. Child Tags
  • <define-list> (optional and may occure more than once)
  • <navigation-list> (optional and may occure more than once)
  • <order-list> (optional and may occure more than once)
  • <unorder-list> (optional and may occure more than once)
  • <table> (optional and may occure more than once)
  • Simple Block Elements (optional and may occure more than once)
  • Form Controls (Defined in XForms, optional and may occure more than once)
<table>
The <table> element allows authors to store and organize data in a grid or chart fashion. Child Tags
  • <head-row> (optional)
  • <table-row> (may occur more than once)
Attributes:
  • Core Attributes Group
<head-row>
The header row is a container of header cells to provide meta-data for tables. Child Tags
  • <head-cell> (may occur more than once)
Attributes:
  • Core Attributes Group
<table-row>
A <table-row> MAY carry header cells or standard table cells. A row is the standard unit of organization in a MML table. Child Tags
  • <head-cell> (may occur more than once)
  • <table-cell> (may occur more than once)
Attributes:
  • Core Attributes Group
<head-cell>
A header cell provides meta-data that either labels or describes the data contained within its scope. The scope of the header cell is determined by use of the scope attribute. A header cell MUST contain either a single simple block or text plus any number of inline elements. Child Tags
  • Simple Block Element or Text with optional Inline Tags
Attributes:
  • Core Attributes Group
  • Internationalization Attributes Group
  • Cell Attributes Group
  • scope
<table-cell>
The table cell is the standard unit of data in a table cell. A table cell is not intended to provide any meta-data about the table or the structure of the table. A table cell is intended to provide data directly to the user. A table cell MUST contain either a single complex block or text plus any number of inline elements. Child Tags
  • Simple Block Element or Text with optional Inline Tags
Attributes:
  • Core Attributes Group
  • Internationalization Attributes Group
  • Cell Attributes Group
<section>
A section is a high level structural organization block. This is the only complex block capable of containing itself, such as nesting. The intent of the <section> tag is to subdivide the markup in the various smaller areas for content organization and semantics. Child Tags
  • Complex Blocks and/or Simple Blocks
Attributes:
  • Core Attributes Group