
I've long been a fan of SGML, but I recognize that most content creation tools are too difficult to use when you are creating SGML. So, now I focus on XML. It's easier than SGML, and more tools exist for XML. This includes tools for creating content as well as tools (and APIs for many popular programming languages) for working with the content, in other words content management systems (CMS). XML doesn't magically make it all work, though. It's only a piece of the puzzle.
CMS is one of those terms that is becoming overloaded. It means different things to different people.
When I say CMS I don't mean a publication system. In other words, a system like PHP-Nuke, Drupal, or Vignette, that focuses on publishing content on the web may contain some CMS functionality, but it is not a CMS, it's a web publishing framework.
I also don't mean a database, although a database can be an important part of a CMS. A database is focused on storing data and allowing you to query that data, not on tracking how the data changes.
The third similar technology is SCM (Source Control Management). It stores information, and tracks how the information changes, but it doesn't help you assemble it.
Here's what I think - a CMS manages content. It allows you to create content how you want, store it how you want, track how it changes in time, and then assemble the pieces how you want. That definition is useless though. What is content? What does it mean to "store" content? What is a piece of content? How do you track the changes? What does "assemble" mean?
The difference one of focus. A CMS focuses on the content, not on the input, not on the output, not on the change. Of the three similar technologies, SCM has the closest fit to that definition. Normally SCM is input and output agnostic. But a SCM system does not help you to do anything with the content once it has been stored. You store it, then you retrieve it. A CMS has to do more. It has to, like a database, allow you to query the content and assemble it in different ways, and with modern technologies for XML, like XSLT and XQuery, you have the tools to add functionality that is provided by a publication system and a database system to a SCM.