data/elements.json
~~~~~~~~~~~~~~~~~~

This file contains data on HTML/XML elements.

* Structure

The file contains a JSON object, which contains following name/value
pairs:

  categories [object]

    Element categories.  The names are identifiers for the categories
    used within this data file.  Values are properties of the
    category, including:

      elements [object?]

        Elements belonging to the category.  Names in the object are
        namespace URLs.  Their corresponding values are JSON objects
        containing local names of elements in the namespace as names
        and boolean true values as values.  The local name |*-*|
        represents the autonomous custom elements.  The list only
        contains elements unconditionally classified to the category.

      elements_with_exceptions [object?]

        Same as |elements|, but elements in this object might not
        belong to the category depending on the context.

      has_additional_rules [boolean]

        More content can be classified into the category, but the rule
        can't be expressed here.

      id [id-in-spec?]

        The identifier of the category in the specification identified
        by the |spec| property, if any.

      label [string]

        The human-readable name of the category.

      spec [spec]

        The specification in which the category is defined.

      text [boolean]

        If true, text is also in the category.

      text_no_space [boolean]

        If true, text other than inter-element whitespace is also in
        the category.

  elements [object]

    Descriptions of known DOM elements.  Names are namespaces and
    values are corresponding namespace descriptions.  Namespace
    descriptions are JSON objects whose names are local names and
    values are [element-description] for corresponding local names in
    the namespace.

    The null namespace is represented by the empty string.

    The [element-description] for the local name |*| is the
    description for the local names not covered by any other local
    name in the namespace description, except for the |attrs| (see
    [attr-description]).

    The [element-description] for the local name |*-*| is the
    description for the autonomous custom elements.

  input [object]

    Applicability
    <https://www.whatwg.org/specs/web-apps/current-work/#concept-input-apply>
    of attributes, methods, and events for the HTML |input| element.
    The object contains names: |attrs|, |idl_attrs|, |methods|, and
    |events|.  Their corresponding values are objects, containing
    name/value pairs whose names are names of content attributes, IDL
    attributes, methods, and events, respectively.  (All content
    attributes are in no namespace.  Note that some of them are
    non-conforming.)  These names also have corresponding objects as
    values, whose names are |input| |type| keywords (in lowercase).
    The values represent whether the attributes, methods, and events
    apply in the state of the |type| attribute or not, using one of
    following |string?| values:

      If the value is not set, it does not apply.

      If the value is |1|, it does apply.

      If the value is |if-not-multiple|, it does apply when the
      |multiple| attribute is /not/ specified.

      If the value is |if-text-field|, it does apply but the method's
      behavior depends on the existence of the text field.

      If the value is |value|, |default|, |default/on|, or |filename|,
      it does apply and the value represents the type of the action of
      the IDL attribute, as described in the HTML Standard.

      If the value is |obsolete but conforming|, it does not apply, it
      should not be used, but use of it is "obsolete but conforming".

      Otherwise, the value represents the mode of the |value| IDL attribute.

    For the |value| content attribute, instead of applicability,
    following applies: If the value is not set, the attribute must not
    be specified.  Otherwise, if the |value| content attribute has
    non-empty value, it must be valid in the format described by the
    value.  See the description for the |value_type| property for the
    list of possible values.  Additionally, if the value is set and
    the |min| and |max| attributes are applicable, the value also
    describes the format that these attribute values must conform to.
    (Note that there are additional constraints that can't be
    described by these values.  See the specification for details.)

    The object also contains an object for the name "aria".  The
    object contains name/value pairs where names are |input| |type|
    keywords (in lowercase) and values are corresponding ARIA
    semantics objects.  See later section for details of the structure
    of objects.

    The object also contains an object for the name "states".  The
    object contains name/value pairs where names are |input| |type|
    keywords (in lowercase) and values are corresponding JSON objects
    containing properties apply to the element only when whose |type|
    attribute is in specific state.  Name/value pairs for elements are
    also available for element states if they are defined to be
    applicable for element states.

  namespaces [object]

    Names are namespace URLs and values are their properties,
    represented as [protocol-object] with following name/value pairs:

      atom_family [boolean]

        Whether the namespace is one of Atom family namespaces
        [VALLANGS] or not.

      label [string?]

        A short human-readable text description for the namespace.

      prefix [string?]

        The most typical namespace prefix for the namespace, if any.
        If the typical namespace prefix is not known, or if the most
        typical usage is the default namespace, no value is set.

      supported [boolean]

        Whether the data file contains the complete data for the
        namespace (similar to the "fully supported" concept
        [VALLANGS]) or not.

  not_custom_element_names [object]

    Names are strings that match the |PotentialCustomElementName| but
    not valid custom element names and values are [boolean] true
    values.

  rss_elements [object]

    Descriptions of RSS2 elements.  The value is a JSON object whose
    names are local names and values are [element-description] for
    corresponding local names.

    The element description for the local name |*| is the description
    for the local names not covered by any other local name, except
    for the |attrs| (see [attr-description]).

    Note that the |*| namespace description of |elements| is also
    applicable to RSS2 elements.

* Element description objects

An element description [element-description] is a [protocol-object]
with following name/value pairs:

  all_named [boolean]

    Whether the element is one of "all"-named elements or not
    <https://www.whatwg.org/specs/web-apps/current-work/#all-named-elements>.

  aria [object?]

    The ARIA semantics of the element.  If an object is specified,
    that contains the description of the element-specific ARIA
    semantics.  In addition, if an object is specified for the "*"
    local name, it is also applicable to the elements in that
    namespace.  See later section for details of the object's
    structure.

  atom_extensible [boolean]

    Whether the element is an Atom extensible element [VALLANGS] or
    not.

  attrs [object?]

    Names in the object are namespace URLs (the null namespace is
    represented by the empty string).  Their corresponding values are
    JSON objects containing local names of attributes in the
    namespaces.  Objects corresponding to local names contain
    properties of the attribute [attr-description].

    Note that the [attr-description] object for elements with non-"*"
    local name does not contain global attributes.  If there is the
    objects for element with "*" local name in the same namespace,
    their attributes are also applicable to any other element in the
    same namespace.  Additionally, attributes for namespace "*" and
    local name "*" is also applicable to any element.  (If attributes
    with same namespace URL and local name are defined for "*" and
    non-"*" elements, the definition for non-"*" element takes
    precedence.)

    The |data-*| attributes, |x-*| and |_*| attributes, custom
    attributes for the HTML |embed| element, and XML namespace
    declaration attributes other than the |xmlns| attribute are not
    listed.

  auto_br [string?]

    Whether the automatic <br> insertion in some kind of HTML
    authoring support tools
    (e.g. <http://staff.hatenablog.com/entry/2013/09/25/124816>)
    should be enabled or not.  Whether HTML |br| elements should be
    inserted at appropriate places as child of an element /E/ can be
    determined by following steps:

      1. Set /value/ to the |auto_br| property value for namespace "*"
         and local name "*".

      2. Set /value/ to the |auto_br| property value for /E/'s
         namespace and local name "*", if it is set to a non-null
         value.

      3. Set /value/ to the |auto_br| property value for /E/'s
         namespace and local name, if it is set to a non-null value.

      4. If /E/ is an HTML |noscript| element and it has a parent
         element, set /value/ to the result of applying these steps to
         the parent element.

      5. If /value/ is "allow", enable automatic <br> insertion.
         Otherwise, if /value/ is "disallow", disable automatic <br>
         insertion.

    Note that a descendant element of "disallow"ed elements might
    allow automatic <br> insertion.

  button [boolean]

    Whether the element is a button
    <https://www.whatwg.org/specs/web-apps/current-work/#concept-button>
    or not.

    This name/value pair can also be specified in |states| of HTML
    |input| element.

  canvas_fallback [boolean]

    Whether the element is an interactive content that is allowed as a
    descendant of an HTML |canvas| element or not.

    This name/value pair can also be specified in |states| of element
    or HTML |input| element.

  categories [object?]

    A JSON object containing categories to which the element belongs.
    Names are identifiers of categories and values are boolean true
    values.

    This name/value pair can also be specified in |states| of element
    or HTML |input| element.

  child_elements [object?]

    A description of content model, represented as list of allowed
    elements.  Note that this description might not be complete
    description of the content model.  Please check the relevant
    specifications.  The object, if any, has name/value pairs whose
    names are namespace URLs and values are objects, whose names are
    local names in the namespace and values are objects, which has
    following name/value pairs for the element with the namespace URL
    and local name:

      has_additional_rules [boolean]

        If true, there are additional rules on the usage of the
        element.  Please note that even when this flag is not set,
        there might be additional rule depending on the context.

      max [number?]

        The maximum value of the number of the element allowed as the
        children of the element in question.  If the value is not
        specified, any number of elements can be specified (unless
        there is any other constraint).

      min [number]

        The minimum (or required) value of the number of the elements
        allowed as the children of the element in question.

  conforming [boolean]

    Whether using the element is conforming or not.  If this flag is
    not set, the element is non-standard or obsolete.

  complex_content_model

    More detailed description of the content model of the element, if
    it is not representable in |content_model|'s values.  (This
    description also has limitations, however.)

    If the value is a JSON array, elements represented by its items
    must be included as content, in order.  Items are JSON objects
    describing kinds of elements, using following properties as
    name/value pairs:

      categories [object?]

        JSON object containing category names as names and |boolean|
        true values are values.

      elements [object?]

        JSON object containing namespace URLs as names and
        corresponding objects as values, which are objects containing
        local names as names and |boolean| true values are values.

      max [number?]

        The maximum allowed number of elements.  Infinity if not
        specified.

      min [number?]

        The minimum required number of elements.  Zero if not
        specified.

      transparent [boolean]

        If this property has true value, it represents the
        "transparent" content model.

    If |elements| and/or |categories| are specified, it represents
    that there must be a sequence of elements that are in these lists.

  content_ignored_by_to_plain_text [boolean]

    Whether the element's content should be ignored by "to plain text"
    steps or not.

  content_model [string?]

    The content model of the element.  Possible values include:

      empty                  Nothing [HTML].
      text                   Text.
      transparent            Transparent [HTML].
      atomDateConstruct      Atom Date Construct [ATOM].
      atomPersonConstruct    Atom Person Construct [ATOM].
      atomTextConstruct      Atom Text Construct [ATOM].
      atom03DateConstruct    Atom 0.3 Date Construct [ATOM03].
      atom03PersonConstruct  Atom 0.3 Person Construct [ATOM03].
      atom03ContentConstruct Atom 0.3 Content Construct [ATOM03].
      XSLT top-level element XSLT top-level elements [XSLT1].
      XSLT template          XSLT template [XSLT1].
      (otherwise)            One of element categories.

    If no value is provided, either the element's content model can't
    be represented as a category, the element itself is non-conforming
    or non-standard, or the content model is unknown.

    See also |child_elements|, |complex_content_model|, and
    |disallowed_descendants|.

  desc [string?]

    A short description of semantics of the element in English, if
    known.

  disallowed_descendants [object?]

    List of elements that cannot be used as descendants of the
    element, described using following properties as name/value pairs:

      categories [object?]

        JSON object containing category names as names and |boolean|
        true values are values.

      elements [object?]

        JSON object containing namespace URLs as names and
        corresponding objects as values, which are objects containing
        local names as names and |boolean| true values are values.

  document_named [boolean]

    Whether the element can be a named object for the purpose of
    |Document|'s named properties
    <https://html.spec.whatwg.org/#dom-document-nameditem-filter>.

  end_tag [string?]

    If the value is "never", the element is void element.  Otherwise,
    if the value is "optional", the end tag can be omitted in certain
    context.  Otherwise, the end tag is required.  Note that this
    property is not specified for non-conforming elements.

  first_newline_ignored [boolean]

    If true, a newline character that is not part of the actual data
    can be inserted just after the start tag in the HTML syntax
    <https://www.whatwg.org/specs/web-apps/current-work/#element-restrictions>,
    the first newline character just after the start tag is ignored by
    the HTML parser, and the HTML serializer inserts an additional
    newline character just after the start tag
    <https://www.whatwg.org/specs/web-apps/current-work/#serializing-html-fragments>.
    (Note that the |listing| element is not allowed to insert a
    newline in the HTML syntax as it is an obsolete element.  In the
    parser and serializer, it is handled in the same way as other
    elements in this category.)

  has_additional_content_constraints [boolean]

    If true, there are additional constraints that can't be
    represented by |content_model|, |complex_content_model|, and
    |disallowed_descendants|, e.g. requirements depending on the value
    of attributes.  Please note that even when this value is false,
    there might be additional requirements on the content of the
    element; read the spec carefully!

  has_popped_action [boolean]

    Whether some element-specific action invoked when the element is
    popped off the stack of the open elements of the HTML or XML
    parser is defined or not.

  interface [string?]

    The element interface (see DOM Standard) for the element.  If this
    property has a value, it is the interface used for the element.
    Otherwise, if the "interface" property of the "*" local name in
    the same namespace has a value, it is the interface used for the
    element.  Otherwise, the |Element| interface is the used
    interface.

    If you don't want to support Atom DOM, ignore |interface| values
    starting with "Atom".

  lang_sensitive [boolean]

    Whether the element is Language-Sensitive
    <https://tools.ietf.org/html/rfc4287#section-2> or not.

    Note that structured extension elements are also
    Language-Sensitive.

  parser_button_scoping [boolean]

    Whether the element is in the /list/ for the "have a particular
    element in button scope" in the HTML parser or not
    <https://www.whatwg.org/specs/web-apps/current-work/#has-an-element-in-button-scope>.

  parser_category [string?]

    The category of the element in the HTML parser
    <https://www.whatwg.org/specs/web-apps/current-work/#the-stack-of-open-elements>.
    If the value is not specified, the category of the element is
    "orginary".  Otherwise the value is the category of the element,
    which is either "special" or "formatting".

  parser_implied_end_tag [boolean]

    Whether the "generate implied end tags" steps
    <https://html.spec.whatwg.org/#generate-implied-end-tags> of the
    HTML parser generates the implied end tag for this element or not.

  parser_implied_end_tag_at_body [boolean]

    Whether the "body" or "html" end tag token in the "in body"
    insertion mode of the HTML parser generates the implied end tag
    for this element or not.

  parser_implied_end_tag_at_eof [boolean]

    Whether the end-of-line token in the "in body" insertion mode of
    the HTML parser generates the implied end tag for this element or
    not.

  parser_implied_end_tag_thoroughly [boolean]

    Whether the "generate implied end tags throughly" steps
    <https://html.spec.whatwg.org/#generate-all-implied-end-tags-thoroughly>
    of the HTML parser generates the implied end tag for this element
    or not.

  parser_li_scoping [boolean]

    Whether the element is in the /list/ for the "have a particular
    element in list item scope" in the HTML parser or not
    <https://www.whatwg.org/specs/web-apps/current-work/#has-an-element-in-list-item-scope>.

  parser_scoping [boolean]

    Whether the element is in the /list/ for the "have a particular
    element in scope" in the HTML parser or not
    <https://www.whatwg.org/specs/web-apps/current-work/#has-an-element-in-scope>.

  parser_select_non_scoping [boolean]

    Whether the element is NOT in the /list/ for the "have a
    particular element in select scope" in the HTML parser or not
    <https://www.whatwg.org/specs/web-apps/current-work/#has-an-element-in-select-scope>.

  parser_table_body_scoping [boolean]

    Whether the element is in the list of "clear the stack back to a
    table body context" in the HTML parser or not
    <https://www.whatwg.org/specs/web-apps/current-work/#clear-the-stack-back-to-a-table-body-context>.

  parser_table_row_scoping [boolean]

    Whether the element is in the list of "clear the stack back to a
    table row context" in the HTML parser or not
    <https://www.whatwg.org/specs/web-apps/current-work/#clear-the-stack-back-to-a-table-row-context>.

  parser_table_scoping [boolean]

    Whether the element is in the /list/ for the "have a particular
    element in table scope" in the HTML parser or not
    <https://www.whatwg.org/specs/web-apps/current-work/#has-an-element-in-table-scope>.
    It is also in the list of "clear the stack back to a table
    context"
    <https://www.whatwg.org/specs/web-apps/current-work/#clear-the-stack-back-to-a-table-context>.

  root [boolean]

    If true, the element can be used as the document element (or root
    element) according to relevant specifications.  Note that false
    value does not indicate that the element can't be used as the root
    element.  For example, the RDF/XML specification allows infinite
    types of elements as root (with certain constraints).  Note also
    that the true value does not mean the element cannot be used as
    non-root element.

  separated [boolean]

    Whether the element's content should be "separated" or delimited
    from enclosing nodes' data (and the data before and after the
    element should be "separated") by the "to plain text" steps.  Many
    of "separated" elements are typically rendered as |display: block|
    by the UA default style sheet.

  start_tag [string?]

    If the value is "optional", the start tag can be omitted in
    certain context.  Otherwise, the start tag is required.

  states [object?]

    A JSON object whose names are "states" of the element and values
    are JSON object containing properties apply to the element only
    when it is in specific state.  States are represented in "element
    state" type (see |doc/data-types.txt|).  Name/value pairs for
    elements are also available for element states if they are defined
    to be applicable for element states.

  submit_button [boolean]

    Whether the element is a submit button
    <https://www.whatwg.org/specs/web-apps/current-work/#concept-submit-button>
    or not.

    This name/value pair can also be specified in |states| of HTML
    |input| element.

  supported_canvas_fallback [boolean]

    Whether the element is a supported interactive canvas fallback
    element
    <https://www.whatwg.org/specs/web-apps/current-work/#supported-interactive-canvas-fallback-element>
    or not.

    This name/value pair can also be specified in |states| of element
    or HTML |input| element.

  syntax_category [string?]

    The kind of the element in the HTML syntax
    <https://www.whatwg.org/specs/web-apps/current-work/#syntax-elements>
    and how the element is serialized in the HTML syntax
    <https://www.whatwg.org/specs/web-apps/current-work/#serializing-html-fragments>.

    If specified, the value is one of "void", "obsolete void", "raw
    text", "obsolete raw text", "escapable raw text", "obsolete void
    macro", and "special".

    The kind of the element can be determined as follows:

      If the value is "void", it is a void element.

      Otherwise, if the value is "raw text", it is a raw text element.

      Otherwise if the value is "escapable raw text", it is an
      escapable raw text element.

      Otherwise, if the element in the SVG namespace or in the MathML
      namespace, it is a foreign element.

      Otherwise, if the element is a conforming element (c.f. the
      |conforming| field) in the HTML namespace, it is a normal
      element.

      Otherwise, the element is in no category.

    Please note that obsolete and non-standard HTML elements are in no
    category.

    The element is serialized as a void element if the value is "void"
    or "obsolete void" (known as "serialized as void" in the HTML
    Standard).  (Note that there is an element with the value
    "obsolete void macro", which is not treated as void elements in
    the serialization algorithm, but used as void elements in
    documents and expanded as macro by the parser.)

    The element content texts are serialized without escapes
    (i.e. treated as a raw text element) by the serializer if the
    value is "raw text" or "obsolete raw text", if the value is
    "special" and it is an |iframe| or |plaintext| element, or if the
    value is "special", it is a |noscript| element, and scripting is
    enabled for the element.  (Note that the |iframe| element is not a
    raw text element by definition although it is parsed as a raw text
    element.  The |plaintext| element is in fact not a raw text
    element as the parser does not find its end tag.)

  text_type [value-type?]

    If |content_model| of the element is |text|, the value type to
    which the text has to conform, if known.

  transparent [string?]

    Whether the content model of the element is transparent
    <https://www.whatwg.org/specs/web-apps/current-work/#transparent>
    or not, represented by one of followings:

      If not set, the element is not transparent.
      1           The entire content model is transparent.
      semi        The content model has transparent part.
      partial     The content model is contextually transparent.

  unknown_children [string?]

    Whether child unknown elements [VALLANGS] are allowed or not.

      If not set, child unknown elements are not allowed.
      1           Child unknown elements are allowed.
      nonrdf      Child unknown elements other than some RDF/XML
                  exceptions are allowed.

  url_role [string?]

    Characteristics of URL(s) contained by the element, if any.  See
    attributes' |url_role| property for the description for values.

  window_named [boolean]

    Whether the element can be a named object for the purpose of
    |Window|'s named properties
    <https://html.spec.whatwg.org/#dom-window-nameditem-filter>.

* Attribute description objects

An attribute description [attr-description] is a [protocol-object]
with following name/value pairs:

  avt [boolean]

    Whether attribute value templates [XSLT1] are allowed in the
    attribute value or not.

  browser [boolean]

    If true, the attribute is intended for processing by the browser
    (rather than plugins).  This flag is only set for HTML |embed|
    element.

  conforming [boolean]

    Whether using the attribute is conforming or not.  If this flag is
    not set, the attribute is non-standard or obsolete.

  desc [string?]

    A short description of semantics of the element in English, if
    known.

  directionality_capable [string?]

    If the value is not set, the attribute is not
    directionality-capable
    <https://www.whatwg.org/specs/web-apps/current-work/#directionality-capable-attribute>.
    Otherwise, one of following values is set:

      1          It is a directionality-capable attribute.
      contextual It might be a directionality-capable depending on
                 the context.

  enumerated [object?]

    If the |value_type| is |enumerated|, this object contains the list
    of known enumerated keywords for the attribute.  The names in the
    object are keywords, with two exceptions: "#missing" represents
    the missing value default and "#invalid" represents the invalid
    value default.  Note that the empty string can be a keyword.  If
    the invalid value default is same as the missing value default,
    the invalid value default might not be explicitly shown.  The
    value corresponding to the keyword is a [protocol-object] with
    following additional name/value pairs:

      canonical [boolean]

        If true, it is the canonical keyword for the state.  This flag
        is only set when the canonical one is explicitly defined.

      conforming [boolean]

        Whether the keyword is conforming or not.  Note that even if
        the value is true, the entire attribute (or in fact the
        element of the attribute) might be non-conforming.

      label [string]

        The name of the state corresponding to the keyword, without
        preceding "the" and following "state" words.

      non_conforming [boolean]

        Whether the keyword is specified in some relevant
        specification but non-conforming.  Note that some keywords
        might have none of |conforming| and |non_conforming| flags
        set.

    Note that the missing value default of the |preload| attribute of
    media element is user-agent defined, but the suggested default is
    listed.

  id_type [string?]

    If the |value_type| or |item_type| is "idref" or "hash-ID
    reference", the type of the expected referenced element of IDs in
    the value.  One of followings:

      any       - Any element
      command   - An element that defines a command
      datalist  - An HTML |datalist| element
      form      - An HTML |form| element
      labelable - A labelable element
      object    - An HTML |object| element
      th        - An HTML |th| element

    Note that there might be additional restrictions that cannot be
    represented by one of these values.

  item_type [value-type?]

    If the |value_type| is one of "ordered set of unique
    space-separated tokens", "set of comma-separated tokens", "set of
    space-separated tokens", or "unordered set of unique
    space-separated tokens", the data type of the words in the value,
    if known and representable.

  keywords [object?]

    The list of keywords for the attribute.  How the keywords are used
    depends on the attribute.  The object contains following
    properties as name/value pairs:

      conforming [boolean]

        Whether the keyword is conforming or not.

      id [id-in-spec?]

        The identifier of keyword, if any.

      spec [spec?]

        The specification in which the keyword is defined, if any.

  lang_sensitive [boolean]

    Whether the attribute is language-sensitive
    <https://tools.ietf.org/html/rfc4287#section-2> or not.

  non_conforming [boolean]

    If true, the attribute is non-conforming.  This flag is only set
    for HTML |embed| element as custom attributes are conforming for
    the |embed| element.

  obsolete_but_conforming [boolean]

    Whether the attribute is obsolete but conforming according to the
    HTML Standard or not.  Note that this flag is not set for the
    |maxlength| and |size| attributes of the |input| elemenet as they
    are conforming for some input types.

  required [boolean]

    Whether the attribute is required or not.

  translatable [string?]

    If the value is not set, the attribute is not translatable
    <https://www.whatwg.org/specs/web-apps/current-work/#translatable-attributes>.
    Otherwise, one of following values is set:

      1          It is a translatable attribute and the value is text.
      contextual It might be a translatable depending on the context.
      partial    The value has to be parsed to translate.

  url_role [string?]

    Characteristics of URL(s) contained by the element, if any.  If
    specified, the value is one of followings:

      base                  The base URL.
      contextual            The semantics changes depending on context.
      embedded              The URL is used to retrieve an embedded
                            object in the document.
      hyperlink             The URL is the destination of a hyperlink
                            link.
      hyperlink-secondary   Same as |hyperlink| but the link is not
                            shown in typical primary rendering.
      id                    The URL is used to identify or to reference
                            some type or concept without dereferenced.
      resource              The URL is the destination of an external
                            resource link, used to process the
                            document, or used by elements or scripts
                            in the document as input data.
      submission            The URL to which form or other data
                            is to be submitted.

    Note that the attribute might contain any number of URLs,
    depending on the definition of the attribute.  In fact the
    attribute might not contain any URL but contain some other
    construct.  In any case, this property apply only to URLs
    contained by the attribute.

  value_type [value-type?]

    The type of the attribute value, if it is known and representable.

* ARIA semantics objects

ARIA semantics objects contain definitions of the strong native
semantics and the default implicit ARIA semantics, extracted from
relevant standards and reorganized in mechine-readable form.

An ARIA semantics object is a JSON object where names are representing
states of the element and values are corresponding ARIA definitions.

States are represented in "element-state" data type (see
|doc/data-types.txt|).

Values corresponding to the states are JSON objects, with following
name/value pairs:

  allowed_roles [object?]

    If specified, a JSON object whose names are roles and values are
    boolean true values.  It represents the list of the roles that can
    be explicitly specified for the element.  Note that the list does
    not contain the role defined as part of the default implicit ARIA
    semantics, as the default role is not allowed to be specified
    explicitly.

  attrs [object?]

    Names are ARIA attribute names and values are their properties
    represented as JSON objects with following name/value pairs:

      attr [string?]

        The content attribute name (in no namespace) referenced by the
        |value_type|.

      state [string?]

        The state referenced by the |value_type|.  If specified, one
        of following values:

          |:disabled|   Whether the element is disabled (#concept-fe-disabled)
          |:invalid|    True iff the element is a candidate for constraint
                        validation but that does not satisfy its constraints.
          |:indeterminate:checked| If |indeterminate| IDL attribute is true,
                        |mixed|.  Otherwise, the checkedness of the element.
          |:checked|    The checkedness of the element.
          |:selected|   The selectedness of the element.

      strong [boolean]

        If true, the ARIA attribute is part of the strong native
        semantics (and therefore the attribute must not be specified
        by author).  Otherwise, the ARIA attribute is only part of the
        default implicit ARIA semantics (and therefore the author can
        specify the attribute as long as it does not conflict with
        other definitions).

      value_type [string]

        Represents how the ARIA attribute value is determined as part
        of the default implicit ARIA semantics.  One of following
        values:

          |true|         - The value is |true|
          |false|        - The value is |false|
          |true/false|   - If /input/ is true, the value is |true|.
                           Otherwise, the value is |false|.
          |true/false/mixed| - If /input/ is true, the value is |true|.
                           Otherwise, if /input/ is false, the value is
                           |false|.  Otherwise, the value is |mixed|.
          |true/missing| - If /input/ is true, the value is |true|.
                           Otherwise, the attribute is not contained in
                           the default implicit ARIA semantics.
          |false/missing| - If /input/ is true, the value is |true|.
                           Otherwise, the attribute is not contained in
                           the default implicit ARIA semantics.
          |missing/true| - If /input/ is true, the attribute is not
                           contained in the default implicit ARIA semantics.
                           Otherwise, the value is |true|.
          |outlinedepth| - The depth of the element in the outline.
          |maximum|      - The maximum of the element.
                           If not set, the attribute is not contained in
                           the default implicit ARIA semantics.
          |minimum|      - The minimum of the element.
                           If not set, the attribute is not contained in
                           the default implicit ARIA semantics.
          |maximum-if-determinate| - If determinate, the maximum.
                           Otherwise, the attribute is not contained in
                           the default implicit ARIA semantics.
          |value-if-number| - The value of the element, if it is a number.
                           Otherwise, the attribute is not contained in
                           the default implicit ARIA semantics.
          |value-if-determinate| - If determinate, the value.
                           Otherwise, the attribute is not contained in
                           the default implicit ARIA semantics.
          |0-if-determinate| - If determinate, the value |0|.
                           Otherwise, the attribute is not contained in
                           the default implicit ARIA semantics.
          |list-if-combobox| - If there is the suggestion source element,
                           the value of the |list| attribute.
                           Otherwise, the attribute is not contained in
                           the default implicit ARIA semantics.
          |details-open| - If the parent of the element is a |details|
                           element and it has an |open| attribute,
                           |true|.  Otherwise, |false|.
          |open-hidden|  - If the element does not have an |open| attribute
                           or if the element has a |hidden| attribute,
                           |true|.  Otherwise, |false|.

        For these definitions, /input/ is the existence of the content
        attribute of the element specified by the |attr| value, if
        any, or the state of the element identified by the |state|
        value, otherwise.

  default_role [string?]

    The role for the element, which is used when no role is explicitly
    specified by the author.  If it is the special value
    |#textbox-or-combobox|, the role is |combobox| or |textbox|,
    depending on whether there is an associated |datalist| element or
    not.

  strong_role [boolean]

    Whether a role is defined as part of the strong native semantics
    or not.

    If true, the role of the strong native semantics is the value of
    the |default_role| (if it is non-null), or defined as no role.

    If false, the role of the default implicit ARIA semantics (but not
    the strong native semantics) is the value of the |default_role| if
    it is non-null), or defined (explicitly or implicitly) as no role.

* See also

The |data/selectors.json| data file contains the list of attributes
compared case-insensitively.

* Sources

[HTML] HTML Standard <https://html.spec.whatwg.org/>,
<https://github.com/whatwg/html/commit/f619b0c0dfa6076d738c90e0d115221efc7cd003>.

[SVG] Scalable Vector Graphics (SVG) 2
<https://svgwg.org/svg2-draft/>.

[ATOM] The Atom Syndication Format
<https://tools.ietf.org/html/rfc4287>,
<https://www.rfc-editor.org/errata_search.php?rfc=4287>.

[ATOM03] The Atom Syndication Format 0.3 (PRE-DRAFT)
<https://github.com/mnot/I-D/blob/master/Published/atom-format/draft-nottingham-atom-format-02.xml>.

[ATOMTHREADING] Atom Threading Extensions
<https://tools.ietf.org/html/rfc4685>.

[ATOMHISTORY] Feed Paging and Archiving
<https://tools.ietf.org/html/rfc5005>.

[ATOMPUB] The Atom Publishing Protocol
<https://tools.ietf.org/html/rfc5023>.

[ATOMDELETED] The Atom "deleted-entry" Element
<https://tools.ietf.org/html/rfc6721>.

[ATOMDOM] Atom DOM
<https://suika.suikawiki.org/www/markup/xml/atomdom>.

[ARIA] Accessible Rich Internet Applications (WAI-ARIA) 1.1
<https://w3c.github.io/aria/aria/aria.html>.

[ARIADPUB] Digital Publishing WAI-ARIA Module 1.0
<https://w3c.github.io/aria/aria/dpub.html>.

[ARIAGRAPHICS] WAI-ARIA Graphics Module
<https://w3c.github.io/aria/aria/graphics.html>.

[ARIAHTML] ARIA in HTML <https://w3c.github.io/html-aria/>.

[GPXP] GPX Parsing <https://wiki.suikawiki.org/n/GPX%20Parsing>.

[OBSVOCAB] manakai's Conformance Checking Guideline for Obsolete HTML
Elements and Attributes
<https://suika.suikawiki.org/www/markup/html/exts/manakai-obsvocab>.

[VALLANGS] DOM Tree Validation
<https://manakai.github.io/spec-dom/validation-langs>.

[RSS1] RDF Site Summary (RSS) 1.0
<http://web.resource.org/rss/1.0/spec>.

[RSSDC] RDF Site Summary 1.0 Modules: Dublin Core
<http://web.resource.org/rss/1.0/modules/dc/>.

[DCES] DCMI: Dublin Core Metadata Element Set, Version 1.1: Reference
Description <http://dublincore.org/documents/dces/>.

[RSSCONTENT] RDF Site Summary 1.0 Modules: Content
<http://web.resource.org/rss/1.0/modules/content/>.

[HATENA] はてなXML名前空間 - Hatena Developer Center
<http://developer.hatena.ne.jp/ja/documents/other/misc/xmlns>.

[RSS2] RSS 2.0 <http://www.rssboard.org/rss-specification>.

[RSSBP] RSS Best Practices Profile
<http://www.rssboard.org/rss-profile>.

[MEDIARSS] Media RSS Specification
<http://www.rssboard.org/media-rss>.

[ITUNES] RSS tags for Podcasts Connect - Podcasts Connect Help
<https://help.apple.com/itc/podcasts_connect/#/itcb54353390>.

[FEED] Feed Parsing <https://wiki.suikawiki.org/n/Feed%20Parsing>.

[XSLT1] XSL Transformations (XSLT)
<https://www.w3.org/TR/1999/REC-xslt-19991116>.

* License

You are granted a license to use, reproduce, and create derivative
works of the JSON file and this document.

Per CC0 <https://creativecommons.org/publicdomain/zero/1.0/>, to the
extent possible under law, the author of the JSON file and this
document has waived all copyright and related or neighboring rights to
the JSON file and this document.

The JSON file contains data extracted from HTML Standard.  "©
Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
Opera Software ASA.  You are granted a license to use, reproduce and
create derivative works of this document."

The JSON file contains data extracted from HTML Standard.  "Copyright
© 2018 WHATWG (Apple, Google, Mozilla, Microsoft). This work is
licensed under a Creative Commons Attribution 4.0 International
License."

The JSON file contains data extracted from the manakai's Conformance
Checking Guideline for Obsolete HTML Elements and Attributes
specification.  "© 2010-2013 Wakaba. You are granted a license to use,
reproduce and create derivative works of this document."