An XML Messsage Board System
An XML Messsage
Jamie Band, Stimulus Software Architects
As part of my quest to learn
more about XML and its associated technologies, I decided to implement an XML
message board system. It serves as useful example to others learning the
technology and to those who simply would like to incorporate a message board
system into their website (without having to install an expensive SQL database).
The downloadable archive contains the following files:
|The main page leading to others
|Contains application scope logic (loading XML doc)
|HTML form for entry of new messages
|HTML form for entry of message replies
|ASP logic for displaying a single message
|XSL stylesheet for displaying a singlemessage
|ASP logic for displaying hierarchical list of
|XSL stylesheet for displaying hierarchical list of
|ASP logic for inserting a message in the message tree
|XML Schema for the messageboard.XML
|XML file created by ASP logic to store messages
To install and run this XML application on your own
system you will need:
ASP enabled web server such as Internet Information Server
XML parser (MSXML 3.0 beta and higher)
You’ll need to configure your web server’s file write access permissions in
the directory where you install the above files. This can be a little tricky in
IIS so be sure read the IIS documentation to find out how.
A message board system is suited to XML implementation, because it is inherently
a hierarchical system.
message is contained within a message group. A reply to a message is neatly
contained within its original message. This
simple structure is used to define a message tree. The entire message tree is
stored in the XML flat file “messageboard.xml”.
The information contained in the message tree is
displayed in an appropriate format using XSL style sheets.
This example does not rely on the presence of an XML/XSL capable browser.
It uses XSL processing on the server-side to output HTML for legacy browser
compatibly. However the example could just as easily be modified to support XSL
processing on the client.
The root node (“messageboard”) in the XML message tree is constructed in the
Application_OnStart method of global.asa supposing no messages have been posted.
The DOMDocument object is therefore defined at application-level scope,
meaning that multiple users access the same document tree in memory.
Each message in the message board contains the
Subject = the subject of the message
Nick = the nickname of the person who wrote the message
Id = a unique identifier associated with the stored message
PostDt = the time and
date when the message was posted
The file “submitmessage.asp” contains ASP the logic
for inserting a message node into the message tree, in response to new post and
reply to message operations.
The XSL stylesheets viewmessagelist.xsl, and
viewmessage.xsl, display a list of hierarchical messages in a message group and
the contents of a message, respectively.
XSL parameters are used extensively, for example, to display a particular
message associated with a message Id, the viewmessage.xsl stylesheet includes
The above msgid parameter is supplied prior to XSL
processing in the ASP script:
where id contains the unique id of the message to be
Message IDs are used to locate messages in the message board, using the
nodeFromID() method available in the MSXML-2 XMLDOMDocument object.
By far the most interesting style sheet is viewmessagelist.xsl. The style sheet
displays the message hierarchy by recursively applying message templates and
using the HTML DIV tag to format the output in an indented fashion.
There are a number of useful extensions that can be added to this example, if
you’re keen to beef up your XML expertise:
a search function enabling users to find messages on the message board
message count statistics for each message group
each user (nick) supply information on which messages have been read / not
up message groups from different sources (i.e. web sites)
I hope you find this example useful. If you have any
questions or suggestions you can reach on email@example.com.
Jamie Band is a Systems Architect at Stimulus Software
You can reach him on firstname.lastname@example.org