right.. so.. I either kludge this by storing a static list so I know what order to output the tags in, or I read parse the DTD every time to be completely correct, but with the drawback of the additional overhead that would create.
I think I'll just go for a static list indicating the order the tags need to appear.