You can use one for many reasons :
- Edit XML files
- Validate XML files
- Perform XSLT transformations (examples like kde or gnome users/developpers guide)
- and so on ...
I use it most of the time for XSLT Transformations to generate user documentation. The XSL code is then integrated for example in a Java or C++ application for users configurations, pdf on fly generation,etc..