Click here to Skip to main content
15,612,351 members
Articles / Programming Languages / C#
Posted 29 Nov 2005


90 bookmarked - CMS framework based on XSLT and XML

Rate me:
Please Sign up or sign in to vote.
5.00/5 (16 votes)
29 Nov 20053 min read
CMS for .NET based on XSLT, XML and C#.

Image 1


Sharpcms is a newly published framework for making content management systems in .NET.

These are the primary goals behind it:

  • Separation between the core system and the specific website (for maintaining purpose and bug fixing).
  • New functionality made on a website should be easily ported to all the websites running on the platform.
  • It should be possible for a beginner to setup layout and new functionality.
  • The data model should be defined by the GUI and the settings.
  • It should be able to handle many different content elements (coworkerdata, news, paragraphs, wysiwyg, flash etc.) and should also have many different containers (newscontainer, leftcontent, rightcontent etc.).

We use a generic data model which uses XML for persistency and XSLT for the graphical interface (also known aas HTML). Between those two points we have the actual core system, which is based on plugins for handling the different modules (pages, users, files etc), and a huge XML library for working with the XML.

Right now the system handles the following:

  • Pages with content containers with data elements
  • Multiple templates
  • Generic plugin handling (settings, rules, rights and binaries)
  • Pure XML, XSLT and C#
  • User handling with groups
  • Files (upload, download, movefile, makefolder, movefolder etc.)
  • Picture handling (resize and crop)
  • Settings manager

There are many more things under the hood that we haven't gotten around to document. For example, making a breadcrump is very very easy since its just XSLT and XML.

How to get started

Image 2

Download the demo project. It has all the files you need to make a website. The core system has been compiled to binary files. Unzip to a folder of your choice, open Visual WebDeveloper Express and choose Open Website. Choose the folder where you unzipped the system, hit run and you are up and running.

When you are in Visual Studio, you will see a Custom folder and a System folder. The Custom folder is where you place the settings, modules and the layout - things that are specific to the website you are working on. The System folder is for the core components. I would recommend that you look into the custom/components/frontend folder. That's where the XSLT and the CSS for the front-end lies. This is a good place to start.

Also, for every page in the system there is a unique XML document created live. This document can be seen by adding a query event_xml=true like this:

This is the XML document that the XSLT document parses to HTML.

We need you to get involved

The API (Core and plugins) has most of the functionality needed to make a good website. Right now we are working on the GUI to make it as intuitive as possible. This is nearly impossible if there is no feedback from people with fresh minds and ideas. Therefore, please give us your feedback about the functionality.

We have opened a Google Groups account - please write to it. We will try to send out the news on it as well.

The whole system is placed in a Subversion repository so it should be possible to make patches to the system.


Although I do take the credit for starting the project, I am definitely not the only one who has worked on it. There are a couple of co-workers working with me to produce the system, and solve some of the technical stuffs. On we try to give credits to the people who have helped us - the list is not yet complete. We have also given credits to the articles, samples and other Open Source projects that we have used in our system.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Written By
Web Developer
Denmark Denmark
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

GeneralGeneral Pin
Member 1222491314-Feb-16 23:54
Member 1222491314-Feb-16 23:54 
GeneralThanks Pin
sameerazazi873-Sep-10 2:14
sameerazazi873-Sep-10 2:14 
GeneralI'm find it Pin
Grigori Aghahyants23-Oct-08 22:29
Grigori Aghahyants23-Oct-08 22:29 
GeneralVery GOOD, But Pin
Grigori Aghahyants23-Oct-08 21:21
Grigori Aghahyants23-Oct-08 21:21 
GeneralVery GOOD, But Pin
Grigori Aghahyants23-Oct-08 21:21
Grigori Aghahyants23-Oct-08 21:21 
Generalwell designed Pin
matro21-Aug-06 9:15
matro21-Aug-06 9:15 
GeneralIt's Great Pin
lkhui15-Jan-06 14:48
lkhui15-Jan-06 14:48 
GeneralOpen Source Rulz Pin
pgnz7-Dec-05 13:01
pgnz7-Dec-05 13:01 
GeneralRe: Open Source Rulz Pin
peterhansen28-Dec-05 2:19
peterhansen28-Dec-05 2:19 
GeneralGood job! Pin
tvbusy29-Nov-05 15:46
tvbusy29-Nov-05 15:46 
GeneralRe: Good job! Pin
peterhansen230-Nov-05 1:07
peterhansen230-Nov-05 1:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.