[semantics are given in "quotes"] [some elements are simply defined in terms of Dublin Core elements] [uppercase MUST/SHOULD/MAY language is normative; lowercase language is just me talking] [this snapshot does not allow xml:base, although a future snapshot might, once we figure out what it ought to apply to] [xml:lang may appear on any element, including but not limited to feed, entry, content, title, summary] - XML vocabulary - no DTD - no normative schema (yet) - no strings have normative length limitations - namespace: http://purl.org/atom/ns# - top-level element: feed feed element required attributes of feed: - @version. currently the only acceptable value is 0.2. (0.1 is obsolete and should not be used.) optional attributes of feed: - xml:lang. SHOULD be included. MAY be overwritten on individual entries, if the feed contains entries in more than one language. required children of feed: - title. occurs 1. xsd:string. "dc:title". if this feed describes a website, SHOULD be the title of the website. - link. occurs 1. xsd:anyURI. "the link to the website described by this feed". if this feed describes a website, SHOULD be a link to the homepage of the website. - modified. occurs 1. W3DTF. "dcterms:modified". the modification date of the feed, including any changes to any of the listed entries. SHOULD be UTC. - author. no content, but has subchildren, see below. occurs 0 or 1. at least one of the following MUST be true: 1. feed contains author; 2. every entry contains author. if feed contains author and entry does not, the feed's author element is inherited and applies to that entry. if both a feed and an entry within the feed contain an author, the entry's author overrides the feed's author. every entry MUST have exactly one author. optional children of feed: - tagline. occurs 0 or 1. xsd:string. "dc:description". "a short human-readable tagline for this feed". examples: "All the news that's fit to print" (tagline of NYT). - id. occurs 0 or 1. xsd:anyURI. "permanent, globally unique ID of this feed." MUST NOT change, ever, even if the feed is moved to a new server. for this reason, it probably shouldn't be the same as feed/link, although it MAY be. we're currently discussing options, including and GUID in the COM/CORBA sense. - generator. occurs 0 or 1. xsd:anyURI. "URI of the toolkit that generated this feed." SHOULD be home page of toolkit/program/hosting provider, example http://www.movabletype.org/. MAY include version number, example: http://www.movabletype.org/?v=2.64. - generator optional attribute: @name. xsd:string. "human-readable name of the toolkit that generated this feed". example: name="Movable Type" - copyright. occurs 0 or 1. xsd:string. "dc:rights". "human-readable copyright statement for this feed." for machine-readable licensing information, producers SHOULD use an extension module (to be defined). - entry. see below - contributor. occurs 0 or more. no content, but has children, see below author element required children of author: - name. occurs 1. xsd:string. "dc:creator" of feed or entry (depending on where author element is). MAY be name of corporation, if there are no individual authors or publisher does not wish to make their names available. see optional children of author: - url. occurs 0 or 1. xsd:anyURI. "the URL of this author". - email. occurs 0 or 1. whatever standard defines email address syntax, including plus signs and other allowable weird characters. "the email address of this author". entry element - no content, no attributes (other than optional xml:lang) required children of entry: - title. occurs 1. xsd:string. "dc:title" - link. occurs 1. xsd:anyURI. "permanent link to a representation of this entry". is NOT defined as "link to an external resource described in the content of this entry". MUST be permanent. MUST be globally unique. MUST be clickable (not sure how to express this, perhaps "use an IANA-registered protocol and point to a resource that is viewable by ... uh, something) - id. occurs 1. xsd:anyURI. "dc:identifier". "permanent globally unique ID of this entry". MUST be permanent, MUST be globally unique. MAY be same as link. current recommendations are under active discussion, same issues as feed/id. - issued. occurs 1. W3DTF minus timezone requirement. "dcterms:issued". SHOULD include timezone. SHOULD be expressed in publisher's local timezone. MAY skip timezone (LiveJournal requirement). - modified. W3DTF. "dcterms:modified". SHOULD be UTC. optional children of entry: - created. occurs 0 or 1. W3DTF. "dcterms:created". SHOULD be UTC. if not present, its value is presumed to be identical to modified. - summary. occurs 0 or 1. xsd:string. "dc:description". "short summary, blurb, or excerpt about this entry". MUST be plain text (i.e. no escaped HTML). examples of use: lead on first page of news site. - author. see above - contributor. occurs 0 or more. no content, but has children, see below - content. occurs 0 or more. see below contributor element same required and optional elements as author. name is "dc:contributor", url and email are the same as in author. content element required attributes: - @type. MIME type. "format of this content" optional attributes: - xml:lang. - @mode. 'xml', 'escaped', or 'base64'. "method using to encode this content". if 'xml', value is inline xml (probably namespaced XHTML). if 'escaped', value is an escaped xsd:string which consumers MUST unescap and treat as @type. if 'base64', value is base64-encoded which consumers MUST base64-decode and treat as @type. if content @type="multipart/alternative", @mode MUST NOT be specified, and content element MUST contain 1 or more content elements. These content elements MUST NOT specify @type="multipart/alternative" (i.e. only one level of nesting is allowed). Consumers SHOULD look at all alternative content elements and determine which one is most suitable, based on which @type and @mode the consumer supports, and preferences specified by the end user (if any). Consumers SHOULD NOT render more than one content alternative.