Come creare uno schema XSD a partire da un documento XML? Un problema molto comune è il seguente. Si ha un documento XML e a partire da questo documento si vuole generare il corrispondente schema XSD. Inoltre esiste un'altra utilissima opportunità. Quella di creare a partire da uno schema XSD una libreria java JAR per la manipolazione, tramite oggetti, di un file XML corrispondente allo schema dato. Vediamo come... |
1) Con TRANG
l'istruzione è la seguente
java -jar trang.jar time.xml generated.xsd
Da qua si scarica TRANG
http://www.thaiopensource.com/download/,
non è altro che un jar.
2) Oppure, si va sul sito http://www.hitsw.com/xml_utilites/
qui si può caricare il file XML e viene generato il file XSD.
Soluzione meno valida ed efficace rispetto al punto 1.
3) Altra soluzione sarebbe quella di usare XMLSpy che rispetto alle precedenti due è a pagamento!?!
Una volta ottenuto, o lo si ha già, il file XSD si passa alla generazione della libreria java.
Per fare questo bisogna installare XMLBeans, progetto di Apache.
La URL è la seguente
http://xmlbeans.apache.org/
E' sufficente scaricare lo ZIP e decomprimerlo.
Non è necessario creare le variabili di ambiente che vengono richieste nella pagina di installazione.
Le variabili servono solo a lanciare l'applicazione da qualunque posizione.
Fatto questo l'applicazione parte con il seguente comando:
scomp -out employeeschema.jar employeeschema.xsd
Ai passi precedenti noi abbiamo creato il file employeeschema.xsd, da questo file XMLBeans tira fuori il JAR, ovvero la libreria per gestire
i file XML che corrispondono allo schema dato.
Eseguendo questa istruzione
scomp -out employeeschema.jar employeeschema.xsd
io ho avuto i seguenti errori:
error: Could not load resource "http:...MIO PATH....xsd" (network downloads disabled).
Per ovviare si può provare a fare così:
scomp -dl -out employeeschema.jar employeeschema.xsd
L'opzione iniziale -dl abilita il download.
Così facendo ho attenuto i seguenti errori:
error: derivation-ok-restriction.5.1: A complex type with a simple content model can only restrict a complex type with simple or mixed content model.
Per risolvere questo si devono inserire le seguenti opzioni -noupa -nopvr così l'istruzione diventa:
scomp -dl -noupa -nopvr -out employeeschema.jar employeeschema.xsd
Così io ho risolto tutti i problemi anche con XSD molto complicate.