Come creare uno schema XSD da un documento XML

document_java 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...
Vediamo un po' di soluzioni che mostrano come creare il file schema XSD...
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.