alternates-brainstorming
Introduction
This page is to talk about alternates, that is, places where a user may be given several different items to choose amongst that at some logical level are considered equivalent. The best stawman so far is #6.
Discussion Participants
Editor
Authors
- David Janes, BlogMatrix, Inc.
- Lucas Gonze
- Greg Borenstein
- KevinMarks
Interested Folks
- Joshua Kinberg
- Ernest Prabhakar
Brainstorms
Strawman 1
<fieldset> <a href="example.mp3" type="audio/mpeg">MP3 alternative</a> <a href="example.wav" type="audio/wav">WAV alternative</a> <a href="example.mov" type="video/quicktime">MOV alternative</a> </fieldset>
Discussion
- is legal but warps XHTML definitions -- David Janes
- I think that is fieldset abuse -1 KevinMarks
Strawman 2
<select id="entryN"> <option value="example.mp3">MP3 alternative</option> <option value="example.mov">WAV alternative</option> <option value="example.wav">MOV alternative</option> </select>
Discussion
- is legal but warps XHTML definitions -- David Janes
- butt ugly, probably beyond redemption -- David Janes
- the alternatives aren't clearly links -1 KevinMarks
Strawman 3
<div class="altgroup"> <a class="alternate" href="example.mp3" type="audio/mpeg">MP3 alternative</a> <a class="alternate" href="example.wav" type="audio/wav">WAV alternative</a> <a class="alternate" href="example.mov" type="video/quicktime">MOV alternative</a> </div>
Discussion
- Looks better, but we have an existing rel="alternate" in HTML
Strawman 4 (lists)
An example of a list that expresses no preference.
<ul class="altgroup"> <li><a href="example.mp3" type="audio/mpeg">MP3 alternative</a></li> <li><a href="example.wav" type="audio/wav">WAV alternative</a></li> <li><a href="example.mov" type="video/quicktime">MOV alternative</a></li> </ul>
An example of a list that expresses a preference (i.e. first is best, last is worst)
<ol class="altgroup"> <li><a href="example.mp3" type="audio/mpeg">MP3 alternative</a></li> <li><a href="example.wav" type="audio/wav">WAV alternative</a></li> <li><a href="example.mov" type="video/quicktime">MOV alternative</a></li> </ol>
Discussion
- this rocks, though I'm a little indifferent to altgroup. The only downside is that 'loosely coupled' alternates may not be covered; on the other hand, this may not be so much of an issue. We will know more from the examples -- David Janes
- I like this a lot, and the ul/ol distinction is good, but the rel="alternate" should be there too.
Strawman 5 (lists + explicit alternator)
This varies #4, explicitly stating what is being alternated. Let's say we're trying to express "location". If there was no alternates, we'd just say:
<a href="example.mp3" class="location">MP3</a>
Now, let's say that we have multiple choices. Here's what I think it should look like:
<ol class="location alternates"> <li> <a href="example.mp3" class="location">MP3</a> <br /> I ripped this one using <a href="...">iTunes</a> </li> <li> <a href="example.wma" class="location">WMA</a> <br /> I ripped this one using <a href="...">Windows Media</a> </li> </ol>
Discussion
- "alternates" indicates there's a bunch of choices to follow
- "location" appears multiple times because ...
- "location alternates" indicates we're _composing_ the alternates MF with "location"
Lucas Gonze:
- I fiddled around with CSS and javascript to support this and found it was pretty easy to work with. That's a big plus.
- A drawback is that it departs from existing idioms for microformats.
- A plus is that the same method can be applied to other variants of the Alternates microformat. Let's say you have some MF that depends on a class "photo" to distinguish which one of multiple IMG elements is the alternate, you can declare the OL or UL with class="photo alternates".
- Another plus is that the technique can extend out to more than one item per option, like if there must be both a photo and a location; that would be <ul class="photo location alternates" />
- I have one real doubt. If we're inventing a new syntax to extend the Alternates MF even before the ink is dry, I'm not certain it is adding anything except a hint to help search engines understand the page. I have to think about that issue a bit more.
- I love the fact that it can be applied to other MFs. For example, you could do something like this to express alternate vcards for the same person...
<ol class="vcard alternates"> <li><div class="vcard">vcard 1</li> <li><div class="vcard">vcard 2</li> </ol>
- ... that said, it'd probably be best to run this past everyone else, as it does change the way parsing would happen. Perhaps it's only valid for inner elements?
Strawman 6 (lists + explicit alternator + using existing HTML idiom)
The idiom seems to apply to media files a lot, so bringing in rel=enclosure makes sense here. At the HTML level rel="alternate" is used for stating alternatives (normally on a <link>, but <link> and <a> have the same semantic), and type is applied to the links as a MIME type.
http://www.w3.org/TR/html4/struct/links.html#h-12.3
If you are listing alternatives, use a list
So for your examples, a possible model would be (OL is used to express ordered preference)
<ol class="alternates"> <li><a href="example.mp3" rel="enclosure alternate" type="audio/mpeg">MP3 alternative</a></li> <li><a href="example.wav" rel="enclosure alternate" type="audio/wav">WAV alternative</a></li> <li><a href="example.mov" rel="enclosure alternate" type="video/quicktime">MOV alternative</a></li> </ol>
Following the links syntax, language alternatives can be expressed too (UL indicates no preference in order):
<ul class="alternates"> <li><a href="enexample.mp3" rel="enclosure alternate" type="audio/mpeg" hreflang="en">In English</a></li> <li><a href="esexample.mp3" rel="enclosure alternate" type="audio/mpeg" hreflang="es">En Espagnol</a></li> <li><a href="deexample.mp3" rel="enclosure alternate" type="audio/mpeg" hreflang="de">Auf Deutsch</a></li> </ul>
Discussion
Kevin Marks: I think this retains what you have, and brings it back in line with existing HTML practices. I have a stylistic nitpick about 'alternates' rather than 'alternatives' but as HTML has already gone the other way on that I can concede it. Is class="alternates" distinct enough to prevent false positives in looking for this structure?
See Also
- alternates-examples
- alternates-brainstorming
- media-metadata-examples -- Yahoo's Media RSS uses this