Il mio approccio a questo è stato quello di canonicalizzare la rappresentazione dello schema XML.
Purtroppo, posso anche dirvi che, a differenza della canonicalizzazione dei documenti XML (utilizzata, ad esempio, per calcolare una firma digitale), non è così semplice o addirittura standardizzata.
Quindi, in pratica, è necessario trasformare entrambi gli schemi XML in una "forma canonica", qualunque sia lo strumento che si costruisce o si utilizza, si ritiene che la forma sia, quindi effettuare il confronto.
Il mio approccio era creare un set di schemi XML (potrebbe essere più di un file se si dispone di più spazi dei nomi) per ogni elemento radice di cui avevo bisogno, poiché ho trovato più facile confrontare XSD creati usando lo stile di Russian Doll, a partire da il modello PSVI.
Ho quindi utilizzato opzioni come membri del gruppo di sostituzione di corrispondenza automatica accoppiati con la sostituzione di gruppi di sostituzione con una scelta; rimozione di sequenze di schemi XML "superflui", compressione di singole opzioni o spostamento di minOccurs/maxOccurs per compositori di articoli singoli, ecc.
A seconda delle funzionalità dello strumento di confronto compatibile con XSD, o se ci si accontenta di costruire, potrebbe anche dover riordinare le particelle sotto compositors come xsd: choice o xsd: all; ecc.
In ogni caso, quello che ho imparato dopo tutto è che è estremamente difficile creare uno strumento che funzioni bene per tutte le funzionalità XSD "interessanti" là fuori ... Un caso di prova che ricordo con affetto è stato trattare con vari xsd: qualsiasi contenuto.
Mi chiedo però se le cose sono cambiate da quando ...
fonte
2011-11-28 03:40:53
Darn ho sperato che ci fosse un modo "semplice" che mi mancava. Il post che non riesco a trovare ed è bloccato nella mia testa era lungo le linee di XSOM essendo la canonicalizzazione dell'XSD che sarebbe quindi in grado di essere confrontato. Quali strumenti di confronto con XSD sono stati utilizzati? –
XSOM non è una canonicalizzazione dell'XSD, di sicuro; forse si riferivano alla "vista" PSVI che XSOM compila per te. Ma potrebbe essere usato solo per determinati scenari di base. Dovrai comunque applicare le tue trasformazioni personalizzate per generare nuovi XSD se desideri che gli strumenti esterni facciano il confronto per te.Non sono a conoscenza (o l'ho ancora appreso) di qualsiasi XSOM che serializzerebbe la vista PSVI in un file XSD ... Alla fine ho scritto un intero strumento e infine l'ho etichettato come un Refactoring XML Schema; la conversione in una bambola russa non è sopravvissuta alla versione 1.0 sebbene ... –