Let me explain.
Tridion's approach is to have content (defined as structured XML, with formal associated schemas, etc.). With the exception of "rich text" fields, which can themselves contain HTML markup, fields are simple values, with no tags or code around them other than the markup of the XML structure that defines them. Those content-items ("components" in Tridion-ese :-) ) are processed by Component Templates (CTs), that have any number of processing steps (Template Building Blocks or TBBs) into a Component Presentation (CP) containing the full, presumably-client-ready HTML markup. Pages, then, are constructed by assembling lists of CPs that a Page Template (PT) and its associated TBBs determine how those individual CPs are added to a page when the page is generated or published.
An alternate approach, and one that seems to be fairly common with other CMS', is to have a page layout that is roughly equivalent to a Tridion PT, where regions on the page can contain any (or sometimes any of a limited set) of content-items. There may be other approaches as well, and most of the "other" CMS' seem to support custom content-types, though few of them seem to have out-of-the-box support for them that doesn't involve some set-up or at least some customization of the page templates.
Since the focus for Tridion is around building pages that contain CPs, there's a context implied (if not outright required) by the collaboration of Page and Component templating that allows virtually complete freedom in the generation of CT and PT structures and interaction. It also allows for a fair amoount of logic to be put in place at the templating level to ensure that the implied context isn't violated. The "other" CMS' can provide a similar context for custom content-types, approaching it from the direction of ensuring that every content-item, regardlss of where it might reside on a page, is contextually self-contained.
If you're following (and care about this subject at all), you might be wondering why it matters. A fair question.
It matters because the expectation (at least for some of my co-workers) is more in line with the non-Tridion approach than with the Tridion approach. Their expectation seems to be that when a chunk of content is retrieved from the CMS (a process that is happening outside the CMS itself, contained in application pages that are essentially going to pull content from the CMS as needed), the context for that content will be there. But really, a Component or CP that is, for example, populating a
<li>
element in the page has no way of "knowing" that it will be presented inside an <ol>
or <ul>
element. Since business users will be managing the content and pages (that's why you get a CMS, after all!), this will inevitably lead to bugs, and bugs that may very well go unnoticed for weeks or months. It won't even take anything significant - a simple miscommunication between business users/stakeholders and developers.Granted, at some level, the same can be said for the same CP as it's being assembled onto a page using a PT, but at least in that case, the context can be supplied or enforced (and would be, if I had my way) at the PT level. Outside that CMS environment, the application has to supply that context. If the context needs to change, for whatever reason, that requires a change to the application while an identical change managed solely in the CMS would require a less-expensive templating change.
Not that either approach is better or worse, per se... but given that we've spent the time and money to get Tridion operational (probably close to a half million dollars, if I remember the base costs correctly, and assuming that all the staff working with it are being paid even close to what I'd expect based on industry standards), it seems like a terrible waste of time and money. After all, we could've downloaded something like Drupal or Wordpress and converted it entirely to the company-preferred language (.NET) in less time, and probably with a lot less effort.
As to why this matters...? Well, there's been some discussion of ensuring "semantic" markup (whatever exactly that means in the context it's being used). With the implication that it's "semanticness" needs to be independent of the use that the content is being put to. So we want to have contextually-relevant output without a context. Which means that we have to infer a context, or mandate one.
That feels frighteningly fragile to me...