From Microformats Wiki
Revision as of 11:25, 4 July 2005 by (talk)
Jump to navigation Jump to search

wiki formats


  • Tantek Çelik


Ian Hickson recently lamented to me that:

"I have yet to find a wiki that has both a nice syntax (i.e. one that looks 
like text/plain as opposed to one that looks like just another obscure 
markup language -- if you're going to use markup, why not just use HTML 
in the first place), and that produces semantic markup (as opposed to 
having tags for "bold" and "italics")."

And I have to kind of agree with him. My experience with current wiki formats is that they haven't done that good a job of "paving the cowpaths", that is, taking what people write in plain text documents, and interpreting them as structure, rather than inventing new text conventions (e.g. equal signs for headings?!?) and getting people to learn them.

This page is an attempt to catalog/document current wiki and wiki-like text formats to see if there is any chance of solving this problem.

Technically a wiki format would not be a microformat because it is not expressed in XHTML building blocks. However, many of the other principles of microformats can be applied to perhaps come up with a better solution that what wikis use today (since they all seem to use their own variant formats anyway).

wiki software


What you're using now.

  • paragraphs
    • blank line creates a new paragraph
  • lists
    • start a line with "* " and it will put it into an unordered list.
    • use multiple "*", e.g. "** " for 2nd level, for nested unordered lists.
  • headings
    • prefix (and suffix?) with "=" for level 1 heading, "==" for level 2 heading etc.
  • literal
    • use <pre> ... </pre> tags


What the Technorati Developer's Wiki uses.


wiki formats

straw proposals

What Ian uses in his text/plain documents:

  • h1:
first level heading - followed by a line starting with equal signs "="
  • h2:
second level heading - followed by a line starting dashes "-"
  • h3:
  • p:
    • a blank line to start and finish
  • ol / li
    • a line starting with space then a number followed immediately by a period, e.g.
 1. Here is one ordered list item
    • note that such list items may be separated by blank lines.
    • note that paragraphs within a list item will be indented as much as the text after the list item marker.
    • list is terminated by a non-blank line that *doesn't* start with space then a number then a period, and is outdented from where list item paragraphs are.
  • ul / li
    • a line starting with space then an asterisk then at least one space, e.g.
 * Here is an unordered list item
    • same notes apply respectively as those for ordered list items above.
    • nested unordered list items are similar, except that their marker is further indented, and in addition to "*", other list item markers may be used such as "+" and "-".
  • pre / code
    • some amount of nesting with whitespace. pre / code. it's not clear what type of code (e.g. HTML or CSS).
  • em
    • text surrounded by a single adjacent underline on both sides, e.g.
_at the moment_
  • blockquote and cite attribute
    • a set of lines that being with "| ", and after the last one, a line that starts with " -- ", followed by the citation URL, e.g.:
| This is a quote
| and a second line

Open issues:

  • What's this?
    • -*- Mode: text; -*- It's the Emacs mode line. Just ignore anything starting with one or more spaces and then having the form -*- ... -*-
  • how do you encode in text/plain the semantics of:
    • strong Use *stars* instead of _underscores_
    • dfn
    • dl/dt/dd
    • h4, h5, h6 There is no H4 in this format. Only H1-H3. Just like HTML has no H7, and is limited to H1-H6.
    • table / thead, tbody, tfoot, caption / tr / td, th I have some pages that do tables, you just do an actual ASCII art table with proper ASCII art lines
    • hyperlinked text text/plain has no hyperlinks, so I always put them on the next line (pre/code style)
    • hyperlink relationships (rel attribute on hyperlinked text)
    • address (possibly the "Author: " line?)
    • inline code