UserPreferences

PaceCollectionsAccept


Abstract

Adds a means of identifying the types of Text Constructs and Content that an Entry Collection allows.

Status

Withdrawn

Rationale

There is currently no method for a client to discover what Text Constructs a server supports. This causes interop problems. See the discussions around the following:

Proposal

Add accepted-text and accepted-content elements to the app:collection element in Introspection Documents.

appCollection =
   element app:collection {
      appCommonAttributes,
      attribute title { text },
      attribute href { text },
      ( appMemberType,
        appAcceptedText?,
        appAcceptedContent?,
        & extensionElement* )
   }
7.2.3.X The 'accepted-text' element

The 'accepted-text' element is used to specify a subset of Text Construct 
types a server is willing to accept in a POST or PUT operation.  The value of 
the element is a comma separated list of Text Construct types.  If no 
'accepted-text' element is present, then it is assumed that the server 
accepts entries with any type of Text Construct. A collection MUST NOT 
reject an entry based solely on the type of a Text Construct if the type 
is listed in 'accepted-text'. 

(ed. note: I have zero clue how to represent a comma separated list of fixed
values using the relaxng style)

  atomTextType = ('text' | 'html' | 'xhtml' )
  appAcceptedText = element app:accepted-text { 
    (atomTextType [, atomTextType]*) 
  }

For example, if a collection does not support Text Constructs that are 'xhtml', 
then it would include an 'accepted-text' element listing only 'text' and 'html'.

  <collection title="My blog entries"
    href="http://example.org/reilly/main">
    <member-type>entry</member-type>
    <accepted-text>text, html</accepted-text>
  </collection>
  
7.2.3.X The 'accepted-content' element
  
The 'accepted-content' element is used to specify a subset of Content types a 
server is willing to accept in a POST or PUT operation. The value of the element
is a comma separated list of Content types, including MIME media-types and MIME
media-ranges.  If no 'accepted-content' element is present, then it is assumed 
that the server accepts entries with any Content type.  A collection MUST NOT 
reject an entry based solely on the type of its Content if the type is listed 
in 'accepted-content'.


  atomContentType = ('text' | 'html' | 'xhtml' | media-type | media-range )
  appAcceptedContent = element app:accepted-content {
    attribute allowsrc ( 'yes' | 'no')?,
    (atomContentType [, atomContentType]*)
  }

The 'accepted-content' element MAY contain an 'allowsrc' attribute, with a value 
of either 'yes' or 'no', indicating whether or not content elements with the 
src attribute will be accepted.  If the 'allowsrc' attribute is missing, the 
value is considered to be 'yes'.

For example, if a collection does not support any content other than 'text', 
'html', 'xhtml' and Base64 encoded image files, it would include an 'accepted-content'
element listing each of the accepted types.

  <collection title="My blog entries"
    href="http://example.org/reilly/main">
    <member-type>entry</member-type>
    <accepted-content allowsrc="no">text, html, xhtml, image/*</accepted-content>
  </collection>

Impacts

Example

  <!-- text only titles and summary, text/html/xhtml in the content -->
  <collection title="My Entries" href="...">
    <member-type>entry</member-type>
    <accepted-type>text</accepted-type>
    <accepted-content>text, html, xhtml</accepted-content>
  </collection>

Notes

References copied from ThomasBroyer's PaceCollectionsAcceptedMediaTypes.

References


CategoryProposals