Neocortext.net: where brain and document meet

InterWikiMarkupLanguage (IWML)

A Common Interchange Syntax for Wiki

Locator:  http://www.altheim.com/specs/iwml/
Author:  Murray Altheim
Email:  m.altheim@open.ac.uk
Revision:  27 Mar 2004 03:56:33 UTC

Contents

 

#!wiki CeryleWiki http://purl.org/ceryle/wyki/1.0/

Preliminary distribution available:  iwml-20040412.tar.gz (21K):
Revision: $Id: iwml1.dtd,v 1.2 2004/04/12 04:42:59 altheim Exp $

1. InterWiki Markup Language (IWML) Version 0.1 Draft

Status

This document has no status whatsoever and is not part of any formal working group, process, or plan. IT COMES WITH NO WARRANTEE WHATSOEVER, and is currently Copyright 2004 Murray Altheim, All Rights Reserved. Upon release of the first DTD both this specification, the DTD and related materials will all be released under a Creative Commons license.

This document is an early draft intended to show the direction of the project.

Abstract

This is a rapid design prototype (a version 0.1) for an InterWikiMarkupLanguage, intended to capture an interoperable subset of common wiki functionality. It is not meant to support everything that any wiki syntax is capable of representing, it is for reliable interchange between wiki systems.

1.1. Design Rationale

For further rationale on elimination of some modules, see the XHTML Basic Recommendation. The requirements for InterWiki are not identical to that for small devices, e.g., IWML is by design not constrained by memory footprint or tiny screens. But as an interchange syntax, it does need to form a minimal, interoperable subset of wiki functionality.

1.1.1. Retained Abstract Modules

Below are listed the "Abstract" Modules from XHTML, with justification given for their removal or continued inclusion. The numbers next to the title are the section numbers from [XHTMLMOD].

5.1. Attribute Collections
justification: all included as necessary for normal functionality
5.2.1. Structure Module
justification: necessary for basic functionality
5.2.2. Text Module
justification: everything is supported everywhere. I doubt anyone actually uses <samp> <dfn> or <kbd>, so they could be removed, but why? They're just like <span> with some minor semantics, and can be styled via a stylesheet.
5.2.3. Hypertext Module
justification: let's get rid of this one. (just kidding)
5.2.4. List Module
justification: all typically supported in wiki
5.4.1. Presentation Module
justification: keep what makes sense for convenience to keep. <span class="bold"> or even <strong> makes no sense when <b> will do. All accessibility arguments are void with <b> and <i> since those two are supported in all tools. The only real question is for <big>, <small>, <sup> and <sub>. The latter two are the only reasonable way to do formulae, but <big> and <small> are unnecessary and better served by a stylesheet. We keep <sup> and <sub>, get rid of <big> and <small>.
5.4.2. Edit Module
justification: <del> and <ins> not hard to support, and likely useful for diff marking wiki pages, a fairly common activity on wiki
5.4.3. Bi-directional Text Module
justification: retained for international text support. Sad but true. I don't think those who need it would be happy to have it gone. Not all text is left-to-right...
5.5.1. Basic Forms Module
justification: as with XHTML Basic. Necessary for wiki functionality.
5.7. Image Module
justification: wikis use images.
5.15. Metainformation Module
justification: necessary to carry document metadata
5.19. Link Module
justification: necessary functionality for stylesheets and other features
 

1.1.2. Removed Abstract Modules

5.3. Applet Module
justification: already deprecated in XHTML, it's gone.
5.5.2. Forms Module
justification: using XHTML Basic forms
5.6.1. Basic Tables Module
justification: no table support in interchange (basic tables, perhaps?)
5.6.2. Tables Module
justification: no table support in interchange (basic tables, perhaps?)
5.8. Client-side Image Map Module
justification: no typical way for authors to edit this in wiki. OTOH, it's simply a syntax construct for linking, supported natively by almost all browsers.
5.9. Server-side Image Map Module
justification: no expected support in most wiki applications
5.10. Object Module
justification: no support for applet or objects in interchange for lack of interoperability guarantees and difficulty in cross-OS/browser/application consistency
5.11. Frames Module
justification: no support for frames in interchange. Accessibility, model deficiency, lack of interoperability guarantees and difficulty in cross-OS/browser/application consistency
5.12. Target Module
justification: see frames
5.13. Iframe Module
justification: see frames
5.14. Intrinsic Events Module
justification: no user authoring of events markup in wiki
5.16. Scripting Module
justification: no user-authored scripting supported
5.17. Style Sheet Module
justification: no user-authored stylesheet content supported (document-level stylesheets via link element)
5.18. Style Attribute Module
justification: use stylesheet
5.20. Base Module
justification: document base can be expressed as metadata in <meta> element. Better there than in using base element, as we're expressing the intended location of the interchanged content, not the base of of interchange document itself. Use recommended metadata name for this.
5.21. Name Identification Module
justification: covered by 'id' attribute nowadays
5.22. Legacy Module
justification: everything desirable here is possible via a stylesheet, which we do allow

1.2. An XHTML Variant

These are based on the Modularization of XHTML Recommendation. There are three alterations that can be made to a DTD according to the XHTML Modularization spec:

Subset
a strict subset includes fewer language components than the original, with no new or otherwise altered components
Extension
an extension adds language components, generally within a new namespace (if we're following the rules). A strict extension removes none.
Variant
a variant is both a subset and an extension, and may also alter existing elements.

Subclasses are easy and browser support is not a question. Extensions are difficult and browser support must be provided by alternative means (e.g., scripting). When variants impose no new requirements on browsers they are relatively safe, though not entirely predictable if others have similarly modified their web documents. But given that most web content is not valid, this doesn't seem like a great risk.

IWML is an XHTML variant, based on a subset. The places where IWML varies from XHTML are in areas that have (in theory, anyway) no impact on visual presentation. IOW, all changes from the subset of XHTML to IWML are invisible to browsers, and are generally included for things like metadata storage, additional link semantics or metadata, and in one case, presentational hinting (which in wiki are actually semantic, e.g., blank lines are not just whitespace, they are paragraph breaks).

1.2.1. Specific Variations

<meta> everywhere.
Well, not everywhere, but lots of good places. The <meta> element in XHTML is permitted content in the <head> element, and provides metadata about the document itself. In IWML, the <meta> element is itself unchanged, but is now permitted as block-level content anywhere within <body>. The meaning of this is that the metadata contained within any <meta> element found within the descendants of <body> is considered to apply to its parent element. E.g.,
    <p> 
    <meta name="DC.creator" content="Murray Altheim" /> 
    This paragraph was authored by me. 
    </p>

In the above example, the <meta> element states that the particular paragraph has a Dublin Core metadata "creator" of "Murray Altheim".

Note: for Dublin Core (DC) based metadata to have a declared namespace (i.e., machine validity), a link declaring the "DC" prefix is necessary.
See http://dublincore.org/documents/dcq-html/ for more information.

'xml:space' attribute.
The 'xml:space' attribute is now included on any elements that may need to specify preserving internal whitespace. This includes all block-level container elements.
Roles on Links
Actually, this is not an extension per se. The 'rel' and 'rev' attributes available on <a> provide semantics for inbound and outbound links. These actually provide more leverage (in a sense) than the single 'xlink:role' attribute on XLink's simple a-links, given that there are two of them. Some specific roles (using a namespacing scheme similar to use of Dublin Core (as 'DC.xxxxx' within <meta>) is suggested.
XML Namespace.
This specification does not use any new XML Namespace, but does declare a wiki namespace for the purposes of reserving it for possible future use. No such use is currently suggested by this specification.

1.3. References

Augmented Plain Text (APT) Version 1.0  Neocortext.Net Note 17 May 2002, Murray Altheim.

Augmented Plain Text (APT) Version 1.0  Neocortext.Net Note 24 May 2002, Murray Altheim.

(both of the above will be replaced by a link to an updated APT spec on purl.org/ceryle)

Modularization of XHTML  W3C Recommendation 10 April 2001. Murray Altheim, Frank Boumphrey et al.