Abstract
Regarding Draft -08
Redo on PaceCategoryListing
Status
Withdrawn
Rationale
We need a way of enumerating available categories
Proposal
7.1 Example
<?xml version="1.0" encoding='utf-8'?>
<service xmlns="http://purl.org/atom/app#">
<workspace title="Main Site" >
<collection
title="My Blog Entries"
href="http://example.org/reilly/main" >
<member-type>entry</member-type>
<categories fixed="yes">
<atom:category
scheme="http://example.org/categories/"
term="foo" />
<atom:category
scheme="http://example.org/categories/"
term="bar" />
</categories>
</collection>
<collection
title="Pictures"
href="http://example.org/reilly/pic" >
<member-type>media</member-type>
</collection>
</workspace>
<workspace title="Side Bar Blog">
<collection title="Remaindered Links"
href="http://example.org/reilly/list" >
<member-type>entry</member-type>
<categories fixed="no" />
</collection>
</workspace>
</service>
This Introspection Document describes two workspaces. The first, called "Main Site", has two collections called "My Blog Entries" and "Pictures" whose IRIs are "http://example.org/reilly/main" and "http://example.org/reilly/pic" respectively. "My Blog Entries" is an Entry collection and "Pictures" is a Media collection. Entry and Media collections are discussed in Section 7.2.4.
The second workspace is called "Side Bar Blog" and has a single collection called "Remaindered Links" whose collection IRI is "http://example.org/reilly/list". "Remaindered Links" is an Entry collection.
Within each of the two entry collections, the categories element provides a listing of available categories that may be specified for member entries. In the "My Blog Entries" collection, the list of available categories is a closed set, indicating that the server MAY NOT accept entries with categories other those listed. The "Side Bar Blog" collection specifies an open set of categories indicating that the server will accept any categories contained in the member entry.
7.2.2 The "app:workspace" Element
{modify element definition}
appWorkspace =
element app:workspace {
appCommonAttributes,
attribute title { text },
( appCollection+,
appCategories?,
& extensionElement* )
}
{add to 7.2.2}
An app:categories element appearing as a child of app:workspace apply to all contained app:collection elements that do not contain their own app:categories element.
7.2.3 The "app:collection" Element
The "app:collection" describes a collection. The app:collection element MUST contain one app:member-type element and MAY contain one app:categories element.
appCollection =
element app:collection {
appCommonAttributes,
attribute title { text },
attribute href { text },
( appMemberType,
& appCategories?
& extensionElement* )
}
7.2.5
The "app:categories" element provides a listing of what categories may be applied to the members of a collection.
appInlineCategories =
element app:categories {
attribute fixed { 'yes' | 'no' }?,
(atomCategory*)
}
appOutOfLineCategories =
element app:categories {
attribute fixed { 'yes' | 'no' }?,
attribute type { media-type }?,
attribute href { atomURI },
(empty)
}
appCategories = appInlineCategories | appOutOfLineCategories
The app:categories element MAY contain a "fixed" attribute, with a value of either "yes" or "no", indicating whether or not the listing of categories is considered to be a fixed, or closed set. Collections that indicate a fixed set MAY reject members that include categories not specified in the provided listing. Collections that indicate an open set SHOULD NOT reject otherwise acceptable members that include categories that are not specified in the provided listing.
The app:categories element MAY contain a "href" attribute, whose value MUST be an IRI reference. If the "href" attribute is provided, app:categories MUST be empty and the "type" attribute SHOULD be provided, the value of which MUST be a MIME media type.
