def table(title, headers, data_node):
    """
    Returns a dictionary representing a new table element.  Tables
    are specified with two main pieces of information, the headers
    and the data to put into the table.  Rendering of the table is
    the responsibility of the Javascript in the resources directory.
    When the data does not line up with the headers given this should
    be handled within the Javascript itself, not here.

    Args:
        title: The title to display
        headers: The columns to put into the table
        data_node: A dictionary with the form::
            {'case' : {'subcase' : { 'header' : data } } }

    Returns:
        A dictionary with the metadata specifying that it is to be
        rendered as a table.
    """
    tb = {
          'Type': 'Table',
          'Title': title,
          'Headers': headers,
          'Data': data_node,
          }
    return tb