On mailing lists and newsgroups, an immense amount of bandwidth is wasted on when you should use attributes and when you should use elements. However, there's no real semantic difference between the two.
This means that your choice really comes down to aesthetics and pragmatics. First, no matter how fancy your tools, to debug it a human being will have to grovel through formatted text, so write your DTD or schema so that the XML documents you generate read well to a human. Second, remember to keep your tools in mind: when you have a choice pick whichever of elements or attributes will make it easiest to write document-munging programs with whichever API -- DOM, SAX, XSL, regexps, whatever -- that you use.
The goal is to minimize bugs, and to make it easy to debug the ones that get through. Keep your mind on that, and you won't go wrong. Abstract style rules will simply screw you up, because there is no underlying principle at work here, only pragmatics.