Atom DOM

Manakai Project Standard [DATE]

Latest Version
<https://suika.suikawiki.org/www/markup/xml/atomdom>
Version History
<https://suika.suikawiki.org/gate/git/wi/markup/xmlexts.git/history/HEAD:/atomdom-source.en.html>
Author
<>

Status of This Document

This section describes the status of this document at the time of its publication. Other documents might supersede this document.

This document is a technical specification produced as part of the manakai project. It might be updated, replaced, or obsoleted by other documents at any time.

The scope of this specification is explicitly limited within the manakai project. It does not intended to be supported by multiple parties, although nothing prevents it from implemented by other DOM implementations.

Comments on this document are welcome and may be sent to the author.

Translations of thie document might be available. The English version of the document is the only normative version.

Table of contents

Introduction

The Atom DOM is a language and platform independent programming language interface to Atom documents built on top of language-neutral DOM APIs [DOM]. It defines a number of interfaces that provide convenience methods and attributes to process Atom documents [ATOM].

History

The Atom DOM interfaces are defined for the manakai DOM implementation in April 2006. It extends the standard DOM interface by adding convinience methods and attributes to construct or interpret Atom 1.0 documents [ATOM]. Additional interfaces are defined in October 2006 to support Atom Threading extension [ATOMTHREADING]. Interface specificaiton at those days were embedded in the source file of manakai's DOM implementation. The interfaces were defined in terms of DOM3.

The interfaces are extended several times. Some of additions and work items were recorded in SuikaWiki.

In April 2013, these documents are replaced by this specification. Unlike the earlier versions, it defines the interfaces in terms of WebIDL [WEBIDL] and DOM Standard [DOM]. Changes from the earlier versions are listed in the last section of the specification. Changes to this specification are recorded as the Git repository.

Future plans

Future revision of this specification might include support for following technologies:

Definitions

Conformance

The keywords "MUST" and "MAY" in the normative parts of this document are to be interpreted as described in RFC 2119 [RFC2119].

Requirements phrased in the imperative as part of algorithms (such as "strip any leading space characters" or "return false and abort these steps") are to be interpreted with the meaning of the key word ("MUST", "MAY", etc) used in introducing the algorithm.

Conformance requirements phrased as algorithms or specific steps MAY be implemented in any manner, so long as the end result is equivalent. (In particular, the algorithms defined in this specification are intended to be easy to follow, and not intended to be performant.)

User agents MAY impose implementation-specific limits on otherwise unconstrained inputs, e.g. to prevent denial of service attacks, to guard against running out of memory, or to work around platform-specific limitations.

Terms

The terms context object, parent, child, tree order, append, pre-insert, node document, textContent, Document, document, content type, document element, Element, element, local name, namespace, element interface, id, attribute, content attribute, value, set an attribute, Text, data, collection, HTMLCollection, live, static, XML namespace, HTML namespace, DOMImplementation, and createDocument are defined by the DOM Standard [DOM].

The term URL is defined by the URL Standard [URL].

The terms IDL attribute, reflect, resolve a URL, valid non-negative integer, rules for parsing non-negative integers, and a valid global date and time string are defined by the HTML Standard [HTML].

The Atom namespace is http://www.w3.org/2005/Atom [ATOM].

The Atom Threading namespace is http://purl.org/syndication/thread/1.0 [ATOMTHREADING].

The SVGElement interface is defined in the SVG specification [SVG].

The manakai-create-child-element configuration parameter is defined in the manakai DOM Extensions specification [MANAKAI]. If the implementation does not support the configuration parameter, it MUST behave as if the configuration parameter is set to its default value.

The IDL fragments in this specification MUST be interpreted as described in the WebIDL specification [WEBIDL].

Microsyntax

When the user agent is to convert an Atom date-time string to a number, it MUST run the following steps:

  1. If the string is an RFC 3339 date-time which does not represent a leap second, return the number which is equal to the time value of the JavaScript Date object which represents the same instance as the string.

    Unlike a valid global date and time string, the string can represent a date in year 0000 and the time zone hour component can be greater than 23.

  2. Otherwise, if the string cannot be parsed successfully, return zero.
  3. Otherwise, return an implementation dependent number.

    Unfortunately, there is no specification for this...

When the user agent is to convert a number to an Atom date-time string, it MUST return a valid global date and time string representing the same instance as the JavaScript Date object whose time value is equal to the number. The string MUST be in UTC, with the time-zone offset string Z. If the number cannot be represented by such a string, the result MAY be an implementation-dependent string.

DOM operations

To set the xml:lang attribute of an element element to value value, the set an attribute steps MUST be invoked using element, value, local name lang, prefix xml, and namespace the XML namespace.

To append an Atom element local name with text content to parent, the following steps MUST be run:

  1. Let element be an element whose local name is local name and namespace is the Atom namespace.
  2. If text content is not the empty string, append a Text node whose data is text content.
  3. Append element to parent.

To obtain the child element of element with local name and optionally namespace, the following steps MUST be run:

  1. Let namespace be the Atom namespace if it is not explicitly given.
  2. If element has a child element whose local name is local name and namespace, return the first such element in tree order and abort these steps.
  3. Otherwise, if the manakai-create-child-element configuration parameter of the node document of element is set to true:
    1. Let child be an element whose local name is local name and namespace is namespace.
    2. Let entry be null.
    3. If the context object is the feed element in the Atom namespace and it has an entry child element, let entry be first such an element in tree order.
    4. Pre-insert child into element before entry.
    5. Return child and abort these steps.
  4. Otherwise, return null.

XXX Attributes which obtain the child element should be defined as methods? No other IDL attribute in the platform mutates underlying DOM...

The child element list of type local name for element element with optional namespace is an HTMLCollection rooted at the element, whose filter matches only child elements of element with local name local name and namespace namespace, if specified, or the Atom namespace.

As specified in the DOM Standard, HTMLCollection objects are live by default. Attributes returning HTMLCollection always return the same object.


If an attribute reflects the string value of the child element local name, optionally with namespace, on getting, the attribute MUST run the following steps:

  1. Let namespace be the Atom namespace if it is not explicitly given.
  2. If element has a child element whose local name is local name and namespace, return the textContent attribute value of the first such element in tree order.
  3. Otherwise, return the empty string.

If an attribute reflects the URL value of the child element local name, optionally with namespace, on getting, the attribute MUST run the following steps:

  1. Let namespace be the Atom namespace if it is not explicitly given.
  2. If element has a child element whose local name is local name and namespace:
    1. Let child be the first such element in tree order.
    2. Resolve the textContent attribute value of child, relative to child. If it results in an error, return the empty string. Otherwise, return the result.
  3. Otherwise, return the empty string.

If an attribute reflects the string or URL value of the child element, on setting, the attribute MUST run the following steps:

  1. Let namespace be the Atom namespace if it is not explicitly given.
  2. If element has a child element whose local name is local name and namespace, act as if the textContent attribute of the first such element in tree order is set to the given value and abort these steps.
  3. Let child be an element whose local name is local name and namespace is namespace.
  4. If the given value is not the empty string, append a Text whose data is the given value to child.
  5. Append child to the context object.

Document constructors

Document constructor methods are added to the DOMImplementation object as follows:

partial interface DOMImplementation {
  Document createAtomFeedDocument(DOMString id, [TreatNullAs=EmptyString] DOMString title, [TreatNullAs=EmptyString] DOMString lang);
  Document createAtomEntryDocument(DOMString id, [TreatNullAs=EmptyString] DOMString title, [TreatNullAs=EmptyString] DOMString lang);
};

The createAtomFeedDocument(id, title, lang) method MUST run the following steps:

  1. Let document be a new document.
  2. Set the content type of document to application/atom+xml.
  3. Let feed be a feed element in the Atom namespace.
  4. Set the xml:lang attribute of feed to lang.
  5. Append an Atom id element whose text content is id to feed.
  6. Append an Atom title element whose text content is title to feed.
  7. Append an Atom updated element whose text content is the current time, converted to a string, to feed.
  8. Append feed to document.
  9. Return document.

The createAtomEntryDocument(id, title, lang) method MUST run the following steps:

  1. Let document be a new document.
  2. Set the content type of document to application/atom+xml.
  3. Let entry be a entry element in the Atom namespace.
  4. Set the xml:lang attribute of entry to lang.
  5. Append an Atom id element whose text content is id to entry.
  6. Append an Atom title element whose text content is title to entry.
  7. Append an Atom updated element whose text content is the current time, converted to a string, to entry.
  8. Append entry to document.
  9. Return document.

Atom documents

partial interface Document {
  readonly attribute AtomFeedElement? atomFeedElement;
};

The atomFeedElement attribute of the Document interface MUST run the following steps:

  1. If the document has no document element, return null and abort these steps.
  2. If the document element is the feed element in the Atom namespace, return the element.
  3. Return null.

Interfaces for Atom core elements

The AtomElement interface

The element interface for elements in the Atom namespace or the Atom Threading namespace is AtomElement, unless stated otherwise.

interface AtomElement : Element {
  attribute DOMString xmlbase;
  attribute DOMString xmllang;
};

The xmlbase attribute of the AtomElement interface MUST behave in the same way as the xmlbase attribute of the SVGElement interface.

The xmllang attribute of the AtomElement interface MUST behave in the same way as the xmllang attribute of the SVGElement interface.


The element interface for the id element in the Atom namespace is AtomIdElement.

The element interface for the icon element in the Atom namespace is AtomIconElement.

The element interface for the name element in the Atom namespace is AtomNameElement.

The element interface for the uri element in the Atom namespace is AtomUriElement.

The element interface for the email element in the Atom namespace is AtomEmailElement.

The element interface for the logo element in the Atom namespace is AtomLogoElement.

interface AtomIdElement : AtomElement {};
interface AtomIconElement : AtomElement {};
interface AtomNameElement : AtomElement {};
interface AtomUriElement : AtomElement {};
interface AtomEmailElement : AtomElement {};
interface AtomLogoElement : AtomElement {};

The AtomTextConstruct interface

[NoInterfaceObject]
interface AtomTextConstruct : AtomElement {
  attribute DOMString type;
  readonly attribute Element? container;
};

The type attribute of the AtomTextConstruct MUST reflect the content attribute of the same name. The default value for the attribute is text.

The container attribute MUST run the following steps:

  1. If the value of the type content attribute of the context object, if any, is xhtml, return the div child element of element, in the HTML namespace.
  2. Otherwise, return the context object.

The element interface for the rights element in the Atom namespace is AtomRightsElement.

The element interface for the subtitle element in the Atom namespace is AtomSubtitleElement.

The element interface for the summary element in the Atom namespace is AtomSummaryElement.

The element interface for the title element in the Atom namespace is AtomTitleElement.

interface AtomRightsElement : AtomTextConstruct {};
interface AtomSubtitleElement : AtomTextConstruct {};
interface AtomSummaryElement : AtomTextConstruct {};
interface AtomTitleElement : AtomTextConstruct {};

The AtomPersonConstruct interface

[NoInterfaceObject]
interface AtomPersonConstruct : AtomElement {
  attribute DOMString name;
  readonly attribute AtomNameElement? nameElement;
  attribute DOMString uri;
  attribute DOMString email;
};

The name attribute MUST reflect the string value of the name child element.

The nameElement attribute MUST return the name child element.

The uri attribute MUST reflect the URL value of the uri child element.

The email attribute MUST reflect the string value of the name child element.


The element interface for the author element in the Atom namespace is AtomAuthorElement.

The element interface for the contributor element in the Atom namespace is AtomContributorElement.

interface AtomAuthorElement : AtomPersonConstruct {};
interface AtomContributorElement : AtomPersonConstruct {};

The AtomDateConstruct interface

[NoInterfaceObject]
interface AtomDateConstruct : AtomElement {
  attribute DOMTimeStamp value;
};

On getting, the value attribute of the AtomDateConstruct interface MUST convert the textContent of the context object and return the result.

On setting, the value attribute of the AtomDateConstruct interface MUST act as if the textContent attribute is set to the given value, converted to a string.


The element interface for the published element in the Atom namespace is AtomPublishedElement.

The element interface for the updated element in the Atom namespace is AtomUpdatedElement.

interface AtomPublishedElement : AtomDateConstruct {};
interface AtomUpdatedElement : AtomDateConstruct {};

The AtomFeedElement interface

The element interface for the feed element in the Atom namespace is AtomFeedElement.

interface AtomFeedElement : AtomElement {
  readonly attribute HTMLCollection authorElements;
  readonly attribute HTMLCollection categoryElements;
  readonly attribute HTMLCollection contributorElements;
  readonly attribute AtomGeneratorElement? generatorElement;
  attribute DOMString icon;
  attribute DOMString atomId;
  readonly attribute HTMLCollection linkElements;
  attribute DOMString logo;
  readonly attribute AtomRightsElement? rightsElement;
  readonly attribute AtomSubtitleElement? subtitleElement;
  readonly attribute AtomTitleElement? titleElement;
  readonly attribute AtomUpdatedElement? updatedElement;
  readonly attribute HTMLCollection entryElements;
  AtomEntryElement? getEntryElementById(DOMString id);
  AtomEntryElement addNewEntry(DOMString id, [TreatNullAs=EmptyString] DOMString title, [TreatNullAs=EmptyString] DOMString lang);
};

The authorElements attribute of the AtomFeedElement interface MUST return the author child element list for the context object.

The categoryElements attribute of the AtomFeedElement interface MUST return the category child element list for the context object.

The contributorElements attribute of the AtomFeedElement interface MUST return the contributor child element list for the context object.

The generatorElement attribute MUST return the generator child element.

The icon attribute MUST reflect the URL value of the icon child element.

The atomId attribute MUST reflect the string value of the id child element.

The linkElements attribute of the AtomFeedElement interface MUST return the link child element list for the context object.

The logo attribute MUST reflect the URL value of the logo child element.

The rightsElement attribute MUST return the subtitle child element.

The subtitleElement attribute MUST return the subtitle child element.

The titleElement attribute MUST return the title child element.

The updatedElement attribute MUST return the updated child element.

The entryElements attribute of the AtomFeedElement interface MUST return the entry child element list for the context object.

The getEntryElementById(id) attribute MUST return the first element in the entryElements collection whose atomId attribute value is id and is not the empty string, if any, or null otherwise.

The addNewEntry(id, title, lang) method MUST run the following steps:

  1. Let entry be a entry element in the Atom namespace.
  2. Set the xml:lang attribute of entry to lang.
  3. Append an Atom id element whose text content is id to entry.
  4. Append an Atom title element whose text content is title to entry.
  5. Append an Atom updated element whose text content is the current time, converted to a string, to entry.
  6. Append entry to the context object.
  7. Return entry.

The AtomEntryElement interface

The element interface for the entry element in the Atom namespace is AtomEntryElement.

interface AtomEntryElement : AtomElement {
  readonly attribute HTMLCollection authorElements;
  readonly attribute HTMLCollection entryAuthorElements;
  readonly attribute HTMLCollection categoryElements;
  readonly attribute AtomContentElement? contentElement;
  readonly attribute HTMLCollection contributorElements;
  attribute DOMString atomId;
  readonly attribute HTMLCollection linkElements;
  readonly attribute AtomPublishedElement? publishedElement;
  readonly attribute AtomRightsElement? rightsElement;
  readonly attribute AtomRightsElement? entryRightsElement;
  readonly attribute AtomSourceElement? sourceElement;
  readonly attribute AtomSummaryElement? summaryElement;
  readonly attribute AtomTitleElement? titleElement;
  readonly attribute AtomUpdatedElement? updatedElement;
  readonly attribute HTMLCollection threadInReplyToElements;
};

The authorElements attribute of the AtomEntryElement interface MUST return the author child element list for the context object.

The entryAuthorElements attribute of the AtomEntryElement interface MUST run the following steps:

  1. If the context object contains one or more author child element in the Atom namespace, return the authorElements collection of the context object and abort these steps.
  2. If the context object contains a source child element in the Atom namespace, return the authorElements collection of the first such element and abort these steps unless that collection is empty.
  3. If the parent of the context object is the feed element in the Atom namespace, return the authorElements collection of the element and abort these steps.
  4. Return the authorElements collection of the context object.

The categoryElements attribute of the AtomEntryElement interface MUST return the category child element list for the context object.

The contentElement attribute MUST return the content child element.

The contributorElements attribute of the AtomEntryElement interface MUST return the contributor child element list for the context object.

The atomId attribute MUST reflect the string value of the id child element.

The linkElements attribute of the AtomEntryElement interface MUST return the link child element list for the context object.

The publishedElement attribute MUST return the published child element.

The rightsElement attribute MUST return the rights child element.

The entryRightsElement attribute of the AtomEntryElement interface MUST run the following steps:

  1. If the context object contains one or more rights child element in the Atom namespace, return the first such element and abort these steps.
  2. If the parent of the context object is a feed element in the Atom namespace, return the rightsElement attribute value of that element and abort these steps unless it is null.
  3. Return the rightsElement attribute value of the context object.

The sourceElement attribute MUST return the source child element.

The summaryElement attribute MUST return the summary child element.

The titleElement attribute MUST return the title child element.

The updatedElement attribute MUST return the updated child element.

The threadInReplyToElements attribute of the AtomEntryElement interface MUST return the in-reply-to child element list for the context object in the Atom Threading namespace.

The AtomSourceElement interface

The element interface for the source element in the Atom namespace is AtomSourceElement.

interface AtomSourceElement : AtomElement {
  readonly attribute HTMLCollection authorElements;
  readonly attribute HTMLCollection categoryElements;
  readonly attribute HTMLCollection contributorElements;
  readonly attribute AtomGeneratorElement? generatorElement;
  attribute DOMString icon;
  attribute DOMString atomId;
  readonly attribute HTMLCollection linkElements;
  attribute DOMString logo;
  readonly attribute AtomRightsElement? rightsElement;
  readonly attribute AtomSubtitleElement? subtitleElement;
  readonly attribute AtomTitleElement? titleElement;
  readonly attribute AtomUpdatedElement? updatedElement;
};

The authorElements attribute of the AtomSourceElement interface MUST return the author child element list for the context object.

The categoryElements attribute of the AtomSourceElement interface MUST return the category child element list for the context object.

The contributorElements attribute of the AtomSourceElement interface MUST return the contributor child element list for the context object.

The generatorElement attribute MUST return the generator child element.

The icon attribute MUST reflect the URL value of the icon child element.

The atomId attribute MUST reflect the string value of the id child element.

The linkElements attribute of the AtomSourceElement interface MUST return the link child element list for the context object.

The logo attribute MUST reflect the URL value of the logo child element.

The rightsElement attribute MUST return the rights child element.

The subtitleElement attribute MUST return the subtitle child element.

The titleElement attribute MUST return the title child element.

The updatedElement attribute MUST return the updated child element.

The AtomContentElement interface

The element interface for the content element in the Atom namespace is AtomContentElement.

interface AtomContentElement : AtomElement {
  attribute DOMString type;
  attribute DOMString src;
  readonly attribute Element? container;
};

The type attribute of the AtomContentElement interface MUST reflect the content attribute of the same name. The default value for the attribute is text if the context object does not have the src content attribute, or no default value otherwise.

The src attribute of the AtomContentElement interface MUST reflect the content attribute of the same name, which for the purposees of reflection is defined as containing a URL.

The container attribute of the AtomContentElement interface MUST run the following steps:

  1. If the value of the type content attribute of the context object, if any, is xhtml, return the div child element of element, in the HTML namespace.
  2. Otherwise, if the src content attribute presents, return null.
  3. Otherwise, return the context object.

XXX Accessor for Base64ed content...

The AtomCategoryElement interface

The element interface for the category element in the Atom namespace is AtomCategoryElement.

interface AtomCategoryElement : AtomElement {
  attribute DOMString term;
  attribute DOMString scheme;
  attribute DOMString label;
};

The term and label attributes of the AtomCategoryElement interface MUST reflect the content attribute of the same name.

The scheme attribute of the AtomCategoryElement interface MUST reflect the content attribute of the same name, which for the purposees of reflection is defined as containing a URL.

The AtomGeneratorElement interface

The element interface for the generator element in the Atom namespace is AtomGeneratorElement.

interface AtomGeneratorElement : AtomElement {
  attribute DOMString uri;
  attribute DOMString version;
};

The uri attribute of the AtomGeneratorElement interface MUST reflect the content attribute of the same name, which for the purposees of reflection is defined as containing a URL.

The version attribute of the AtomGeneratorElement interface MUST reflect the content attribute of the same name.

The AtomLinkElement interface

The element interface for the link element in the Atom namespace is AtomLinkElement.

interface AtomLinkElement : AtomElement {
  attribute DOMString href;
  attribute DOMString hreflang;
  attribute DOMString length;
  attribute DOMString rel;
  attribute DOMString title;
  attribute DOMString type;
  attribute unsigned long threadCount;
  attribute DOMTimeStamp threadUpdated;
};

The href attribute of the AtomLinkElement interface MUST reflect the content attribute of the same name, which for the purposees of reflection is defined as containing a URL.

On getting, the rel attribute MUST run the following steps:

  1. If the context object does not has the rel content attribute, return the empty string and abort these steps.
  2. Let value be the rel attribute value of the context object.
  3. If value contains the U+003A COLON character (:), return value and abort these steps.
  4. Return the string http://www.iana.org/assignments/relation/ followed by value.

On setting, the rel attribute MUST run the following steps:

  1. Let value be the given value.
  2. If value is http://www.iana.org/assignments/relation/ followed by sequence of one or more characters other than U+003A COLON character (:), U+0023 NUMBER SIGN character (#), U+002F SOLIDUS character (/), and U+003F QUESTION MARK character (?), remove the http://www.iana.org/assignments/relation/ prefix from value.
  3. Set the rel attribute of the context object to value.

The type attribute of the AtomLinkElement interface MUST reflect the content attribute of the same name. The default value for the type attribute is application/atom+xml if the rel attribute value of the context object is http://www.iana.org/assignments/relation/replies, or no default value otherwise.

The hreflang, title, and length attributes of the AtomLinkElement interface MUST reflect the content attribute of the same name.

The threadCount attributes of the AtomLinkElement interface MUST reflect the count attribute in the Atom Threading namespace. When a new attribute is set by the attribute, the namespace prefix MUST be thr.

On getting, the threadUpdated attribute of the AtomLinkElement interface MUST convert the value of the updated attribute in the Atom Threading namespace and return the result. If the attribute is not present, it MUST return zero instead.

On setting, the threadUpdated attribute of the AtomLinkElement interface MUST set the updated attribute in the Atom Threading namespace to the given value, converted to a string. If a new content attribute is created, the prefix of the attribute MUST be set to thr.

Interfaces for Atom Threading extensions

The AtomThreadInReplyToElement interface

The element interface for the in-reply-to element in the Atom Threading namespace is AtomThreadInReplyToElement.

interface AtomThreadInReplyToElement : AtomElement {
  attribute DOMString href;
  attribute DOMString ref;
  attribute DOMString source;
  attribute DOMString type;
};

The href, ref, and source attributes of the AtomThreadInReplyToElement interface MUST reflect the content attribute of the same name, which for the purposees of reflection are defined as containing a URL.

The type attribute of the AtomThreadInReplyToElement interface MUST reflect the content attribute of the same name.

The AtomThreadTotalElement interface

The element interface for the total element in the Atom Threading namespace is AtomThreadTotalElement.

interface AtomThreadTotalElement : AtomElement {
  attribute unsigned long value;
};

On getting, the value attribute of the AtomThreadTotalElement interface MUST parse the textContent attribute value of the context object according to the rules for parsing non-negative integers, and if that is successful, and the value is in the range 0 to 2147483647 inclusive, it MUST return the resulting value. If, on the other hand, that fails or returns an out of range value, it MUST return 0 instead.

On setting, the value attribute of the AtomThreadTotalElement interface MUST run the following steps:

  1. If the new value is in the range 0 to 2147483647, let n be the new value.
  2. Otherwise, let n be 0.
  3. Convert n to the shortest possible string representing the number as a valid non-negative integer.
  4. Act as if the textContent attribute of the context object were set to the result of the previous step.

Changes from earlier versions of Atom DOM

Earlier versions of this specification defined following feature strings, which are now considered obsolete:

The AtomImplementation interface is now defined as a partial interface for DOMImplementation.

The AtomDocument interface is now defined as a partial interface for Document.

The AtomEntryElementThread and AtomLinkElementThread interfaces are merged with AtomEntryElement and AtomLinkElement interfaces, respectively.

Earlier versions of this specification specified different handling of null values for reflecting attributes. They are removed for consistency with DOM and HTML.

Earlier versions of this specification specfied list of elements returned by various attributes as static, which is now changed to live for consistency with HTML DOM.

The id attribute of AtomFeedElement, AtomEntryElement, and AtomSourceElement interfaces is renamed as atomId to avoid confliction with Element's id attribute defined by DOM.

References

ATOM
The Atom Syndication Format, IETF, RFC 4287.
ATOMTHREADING
Atom Threading Extensions, IETF, RFC 4685.
DOM
DOM Standard, WHATWG.
HTML
HTML Standard, WHATWG.
MANAKAI
manakai DOM Extensions, manakai project.
RFC2119
Key words for use in RFCs to Indicate Requirement Levels, IETF, RFC 2119, BCP 14.
SVG
Scalable Vector Graphics (SVG) 2, W3C SVG WG.
URL
URL Standard, WHATWG.
WEBIDL
WebIDL, Cameron McCormack.