In this recent post to DZone.com Giorgio Sironi talks about how, despite it commonly not being intended this way, configuration files usually end up being "code".
You start out with a simple .ini file [and] after a while, you customize its values by deployment environment. [You] then substitute values in it, to remove duplication or substitute constants, for that matter. Finally, you start supporting dynamic values, because this gives you more flexibility. The thesis of this article is that an efficient solution for supporting the more complex use cases of configuration can be found, without piling up proprietary or open source libraries to parse more and more complex configuration files. This solution, namely, is to use a more powerful language: your own dynamic programming language.
He looks at the "back in the day" configuration types that Java frameworks used - mostly XML files with a tight coupling to the servlet using it. He steps back a bit and looks at what he calls the "properties of code" and relates it to this dynamic language for configuration he's been talking about.