Per il come caricare il dtd che valida il tuo xml te l'ho già data anche io una soluzione (pensavo avessi usato qualcos'altro), ti è sufficiente mettere il dtd nella "doc root" del tuo applicativo (quindi fuori dalla WEB-INF) in modo che il dtd sia pubblicamente visibile alla url http://www.yourhost.com/your_appa/yourdtd.dtd e linkarlo nell'xml esattamente con questo path
per il secondo problema puoi caricare i file in maniera dinamica senza usare path assoluti, anche usando il classLoader.
ti carica un file come stream cercandolo a partire dalla cartella classes della tua webappcodice:getClass().getClassLoader().getResourceAsStream("/your_file.xml")