Design considerations for murbCMS An article explaining what has been considered during the development of :murb:CMS

An article, posted about 20 years ago filed in web, internet, cms, standards, maintanance, xslt & xml.

:murb:CMS is yet another Content Management System build from scratch by yet another designer. So why do I think this one is different? :murb:CMS is...

Note to reader (2010): this year I stopped using murbCMS, although I still sympathize with some of the ideas, maintaining it in PHP consumed too much time and frustration.

What :murb:CMS is not about is webbased editing of documents. Well, it could be, but it will not be my primary target. What :murb:CMS is about is a open flow of information. Connecting seperate files, located anywhere, on basis of their metadata.

Currently this idea hasn't been implemented yet. Some problems I still have to work around are:

Vision

I believe the web should be a heaven for those in search of information. Some may say it already is, but I believe it is too chaotic.

This chaos could be tackled through great search engines or centralized approaches (like wikipedia). A third approach making sure information is stored well. This third approach is how this CMS system tries to make sure documents stay easy accessible. Information architecture first.

Realisation

When you store information, you'll probably prefer having this information still available for over a long time. That is why standars have been created, and that's why I prefer using standards for this CMS. The latest web-standards are all being based on one technology called XML. It's big advantage is it's flexibility and extensibility. Goal of this CMS is therefore also to meet to this flexi- and extensibility.

:murb:CMS tries to embrace these new technologies and will try to reformat any given standards based XML file.

Localisation

As I have a dutch nationality I don't write all my articles in English. And my audience won't speak or read English as fluently as I'd like them too. Therefor there is a need for localisation. This will be done using the xml:lang (and lang attribute for xhtml) attribute(s).

When there are more than one elements specifying language using the right attribute on a single level in an xml file, a language can be selected using information of the browser at the client side (HTTP_ACCEPT_LANGUAGE). In murbCMS PHP obtains this information and makes the default language available to the XSLT parser.

<rdf:Description> <dc:description>General language, default language</dc:description> <dc:description xml:lang="nl">Nederlandse taal, alleen wanneer nederlands als primaire taal is geselecteerd</dc:description> </rdf:Description>

Localisation takes place at 2 places:

Storing

(Hyper)text

My first assumtpion is that the best way to store informational-documents on the web is through XHTML. That is why :murb:CMS will not make use of any different or new document format. XHTML has been designed for the web, has a proven track-history. Furthermore, because XHTML is XML, it can be transformed and extended with other XML-related technologies.

Other formats

Any other XML format can theoratically be plugged into the system. The meta-data file about a document gives the parser the information needed about the document, such as it's type.

A implementation of another xml-type is the simpelPresentation system and another demonstration has been added parsing Age Bosma's ISO 8859-1/15 Character Overview XML file.

Structure

A basic page request would go along the following requests:

  1. check .htaccess -> starts the parser
  2. sitestructure.xml is being processed with the variables gotten from the url/.htaccess
  3. content is being displayed or continue browsing

When continuing browsing sitestructure.xml gives all information required.

When content is denoted by sitestructure.xml another request needs to be done:

  1. display meta data (author, summary) according to meta.rdf in the content directory
  2. check what type of page it is (noted in meta.rdf)
  3. use correct xslt to parse content
  4. page is being displayed

For presentation to the world, structured information is preferred. This is done by a custom made (if there would have been an appropriate standard for this I would have been using that one) format (if you know of one, please contact me. This single file places documents in an hierarchy through references to their metadata. Furthermore its task is to spice up the intermediate pages.

Transformation

XSLT will be used for transformation. The server I host my websites on are all running PHP. So there are dozens of options of transforming some source file into a presentable HTML file. Yet I believe XSLT is the most future proof way of transforming. PHP may change (when I change e.g. from webserver), but the XSLT will stay, as it is supported by other serverside languages as well, heck, even browsers support it!

Design considerations

This section is ment to share some thoughts on storage with you.

Metadata

As metadata is not safed in a standard way over different fileformats I've made the design decision to safe metadata externally.

For further insights on the problem of storing metadata: Sean B. Palmer - he discusses different approaches to include metadata.

Page relations

LINK element

The LINK element can be used to express links between different files. Being never aware of the LINK element for a long period of time (except for linking CSS files), it's use became more obvious to me when Mozilla offered a navigation bar. Firefox (my current browser) does not have this bar, but it can be extended with a plugin. From usability point of view this navigation bar is imho great, because it offers a standarised way of navigating through a website. Furthermore RSS feeds are often recognised when properly LINKed.

Short term goals

Implementation of my personal view of how this information should be managed is still limited, as I just started implementing.

Op de hoogte blijven?

Maandelijks maak ik een selectie artikelen en zorg ik voor wat extra context bij de meer technische stukken. Schrijf je hieronder in:

Mailfrequentie = 1x per maand. Je privacy wordt serieus genomen: de mailinglijst bestaat alleen op onze servers.