Here is another of one of those hopefully useful scripts. I cannot take credit for writing this one, I got it from Arbortext back when the software was still called Adept. 😄
I thank Paul (and I forget his last name, who passed several years ago from Lou Gehrig's disease).
This script will run in an open file that has a DTD or schema and identify ANY unused elements. You say the parser does this right, well partially it does. The parser will identify any elements in a content model that have not been declared (e.g., but is not declared). This script will do the opposite, identifying any elements that are declared but not used.