Problem with Metadata Elements (section 6.4)

2005-05-30 Thread Thomas Broyer


I was discussing extensions offlist with Dave Powell and came to explain
what I previously said on the list about Simple/Structured Extension
Elements [1] when I thought I found a real problem with that.

There have been much discussion last weeks about authors, contributors and
bylines and bylines were rejected to extensions (and I'm +1 on that,
that's not the point). So imagine I want to create such a byline
extension.

Ideally, I'd like it to be text that can be enriched with some markup. The
obvious choice here is to reuse the Text Construct mechanism: it is
already implemented in every Atom Processor so adding support for my
byline extension would be made much easier than redefining a different
mechanism, and of course it is homogeneous with Atom so better for users.

So my ext:byline element MAY have a type attribute with value text,
html or xhtml. When not present, it defaults to text. Depending on
the  type attribute's value, the content is plain flowed text, escaped
HTML or an XHTML div.

My byline extension then looks like the following, and is obviously a
Structured Extension Element (as it comes in atom:feed, atom:entry or
atom:source):
ext:byline type=textBy Thomas Broyer and al./ext:byline
ext:byline type=htmlBy lt;a href=http://www.ltgt.net/;Thomas
Broyerlt;/a and al./ext:byline
ext:byline type=xhtml
  divBy a href=http://www.ltgt.net/;Thomas Broyer/a and al./div
/ext:byline

The problem come when I use a plain flowed text and can then omit the
type attribute:
ext:bylineBy Thomas Broyer and al./ext:byline
My extension becomes a Simple Extension Element when processed by an Atom
Processor, and an Atom Processor having some generic support for Simple
Extension Elements (which is really the intent of SEE) would change its
behavior when processing it, which is not really wanted.
However, I don't think I badly designed the byline extension, or this
would imply that Atom itself is badly designed (and I don't think so).

Are other people here seeing a problem with Simple vs. Structured
Extension ELements or am I the only one?

[1] http://www.imc.org/atom-syntax/mail-archive/msg15751.html

-- 
Thomas Broyer




Re: Problem with Metadata Elements (section 6.4)

2005-05-30 Thread David Powell

Quoting Thomas Broyer [EMAIL PROTECTED]:

 The problem come when I use a plain flowed text and can then omit the
 type attribute:
 ext:bylineBy Thomas Broyer and al./ext:byline
 My extension becomes a Simple Extension Element when processed by an Atom
 Processor, and an Atom Processor having some generic support for Simple
 Extension Elements (which is really the intent of SEE) would change its
 behavior when processing it, which is not really wanted.
 However, I don't think I badly designed the byline extension, or this
 would imply that Atom itself is badly designed (and I don't think so).

I don't think that this is a big problem.  The allowed syntax of Structured
Extension Elements is defined by the designer of the Structured Extension.  It
is the designer's responsibility to ensure that Structured Extensions don't
flip into being Simple Extensions, so they need to be designed in a way such
that they have at least one child element or attribute.

In this case the easiest way to do this would be to make @type mandatory even
when @type=text is required.

--
Dave




Re: Problem with Metadata Elements (section 6.4)

2005-05-30 Thread Thomas Broyer


David Powell wrote:

 Quoting Thomas Broyer:

 The problem come when I use a plain flowed text and can then omit
 the type attribute:
 ext:bylineBy Thomas Broyer and al./ext:byline
 My extension becomes a Simple Extension Element when processed by an
 Atom Processor, and an Atom Processor having some generic support
 for Simple Extension Elements (which is really the intent of SEE)
 would change its behavior when processing it, which is not really
 wanted.
 However, I don't think I badly designed the byline extension, or this
 would imply that Atom itself is badly designed (and I don't think so).

 I don't think that this is a big problem.  The allowed syntax of
 Structured Extension Elements is defined by the designer of the
 Structured Extension.  It is the designer's responsibility to ensure
 that Structured Extensions don't flip into being Simple Extensions, so
 they need to be designed in a way such that they have at least one child
 element or attribute.

 In this case the easiest way to do this would be to make @type mandatory
 even when @type=text is required.

Of course yes, but the extension then doesn't follow the same rules as
Text Constructs, which are part of Atom, and it's bothering me. If I can't
design my extensions in the same way Atom designed its markup, I think
there is a problem... That's why I think the Metadata Elements (Simple and
Structured Extension Elements) wording is too strong in the spec.

The intent is (should be) to give a hint to Atom implementors providing
generic support for name/value pair properties and to extension
designers, not to enforce a particular behavior.

Changing that would also throw away your problem (discussed offlist) with
later allowing (e.g. in Atom 1.1) Metadata Elements in Atom elements where
foreign markup is today just foreign markup, without any defined role.
To summarize for other people on the list, David's problem was that if we
don't define a role today for foreign markup inside Atom elements other
than atom:feed, atom:entry, Person Constructs and atom:source, e.g. inside
atom:link, then we wouldn't be able to define it later, because foreign
markup that would have been used with Atom 1.0 don't necessarily follow
the rules of section 6.4 and therefor won't be ok if Atom 1.1 says that
atom:link's foreign markup children are now considered Metadata Elements.

--
Thomas Broyer