Salve,
Io ho questo problema.
Devo creare un sistema di verifica.
Io ho una DTD creata da me e un file xml generato da Word 2003.
Mi chiedevo se mi conviene fare una trasformazione xslt separata e poi usare Java, oppure usare direttamente un programma java per studiare l'xml generato da word 2003 e per fare in modo che rispetti questa DTD:
codice:
 

<?xml version="1.0" encoding="UTF-8" ?>

<!ELEMENT tesi (titolo, disciplina, autore, relatore, correlatore?, indice, capitolo+, bibliografia)>

<!ATTLIST tesi 
 sessione ( I | II | III ) #REQUIRED
 aa CDATA #REQUIRED >

<!ELEMENT titolo (#PCDATA) >

<!ELEMENT disciplina (#PCDATA) >

<!ELEMENT autore (#PCDATA) >

<!ELEMENT relatore (#PCDATA) >

<!ATTLIST relatore
 titolo (dott. | prof. | ing.) "dott.">

<!ELEMENT correlatore (#PCDATA) >

<!ATTLIST correlatore
 titolo (dott. | prof. | ing.) "dott.">

<!ELEMENT indice (#PCDATA) >

<!ELEMENT capitolo (numero, titolo, paragrafo*,img*)>

<!ATTLIST capitolo
 prima_pagina (numero_dispari) #REQUIRED
 font_titolo (Times_New_Roman | Arial) "Times_New_Roman" 
 font_testo (Times_New_Roman) #REQUIRED
 dimensione_font_testo (12 | 13) "12" >

<!ELEMENT numero (#PCDATA) >

<!ELEMENT paragrafo (numero, titolo, sottoparagrafo*,img*)>

<!ATTLIST paragrafo
 prima_pagina (numero_dispari) #REQUIRED
 font_titolo (Times_New_Roman | Arial) "Times_New_Roman" 
 font_testo (Times_New_Roman) #REQUIRED
 dimensione_font_testo (12 | 13) "12" >

<!ELEMENT sottoparagrafo (numero, titolo, img*)>

<!ATTLIST sottoparagrafo
 prima_pagina (numero_dispari) #REQUIRED
 font_titolo (Times_New_Roman | Arial) "Times_New_Roman" 
 font_testo (Times_New_Roman) #REQUIRED
 dimensione_font_testo (12 | 13) "12" >

<!ELEMENT img (tipo, didascalia)>

<!ATTLIST img
 url CDATA #REQUIRED
 title CDATA #REQUIRED
 didascalia CDATA #IMPLIED>

<!ELEMENT tipo (jpg | bmp | jpeg | png)>

<!ELEMENT didascalia (#PCDATA) >

<!ELEMENT bibliografia (libro | articolo | proceedings | sito)*>

<!ELEMENT libro (autore+, titolo, numero_edizione?, luogo_pubblicazione?, editore, anno)>

<!ATTLIST libro
 isbn CDATA #IMPLIED>

<!ELEMENT numero_edizione (#PCDATA) >

<!ELEMENT luogo_pubblicazione (#PCDATA) >

<!ELEMENT editore (#PCDATA) >

<!ELEMENT anno (#PCDATA) >

<!ELEMENT articolo (autore+, titolo , nome, numero_volume?, anno, pagina)>

<!ATTLIST articolo
 tipo (rivista | periodico) "rivista">

<!ELEMENT nome (#PCDATA) >

<!ELEMENT numero_volume (#PCDATA) >

<!ELEMENT pagina (#PCDATA) >

<!ELEMENT proceedings (autore+, titolo , nome, curatore?, numero_volume?, luogo_pubblicazione?, editore, anno, pagina)>

<!ATTLIST proceedings
 tipo (convegno | libro) "convegno">

<!ELEMENT curatore (#PCDATA) >

<!ELEMENT sito (autore*, titolo, anno, url)>

<!ELEMENT url (#PCDATA) >
E poi come seconda cosa, quale API (o parser) è meglio usare per ottenere buoni risultati?
Rispondetemi prima che potete, grazie!!!