Something will probably supersede XSLT one day since it's a bit cumbersome to learn and use. However, there's currently no template/transformation language available afaik that is as flexible and "pure" in it's implementation.
XSL-T can be used for a few different purposes:
- You can "create" content in say HTML format from a data using a template
- You can convert from one xml format to another
- You can manipulate xml into another format, perhaps show a subset
Basically all these are the same thing however, the transformation of one XML data file to another. Now let's look at some different tools we could use instead of XSLT.
If we wanted to manipulate the content of say a XHTML page we could use regexp, but regexp is messy for structural stuff. It shines for manipulating strings but I wouldn't use it to create a table of contents for something or present it in a different layout.
Next is ASP.Net. We put our layout in our asp page and insert some code behind for the dynamic parts. Another alternative is to foregoe the layout part and generate everything from say a database and using C# creating our desired output.
The problem with the first approach is that it's clumsy to go from descriptive data to actual content. If you have some data file containing phone numbers which you want to present with headers for each letter, show a total nr of entries etc you'd have to have some of the layout in the layout file and some in the code you're generating. Another option is to use some form of web-grid put I find those to be pretty messy and suddenly you have to learn how the frigging grid works when all you wanted to do was to output some specific html given the data.
Going totally dynamic is certainly an option but that's rather clumsy as well. Even in the best case where you're using something like LINQ you'll have to intermingle programming code with output in a rather ugly way. Also there's no good way to properly handle unstructured recursive document-style content which html usually is.
With XSLT you simply can make a template for a certain tag, either just as is or in the context of it's parent so it's rendered differently if it for instance is parentet by something else.
A rather long rambling answer but yes, I think there's great value in a descriptive template language and XSLT is the best and most standardized one we got so far.