2011-01-12 10 views
7

XML ha molti vantaggi. È leggibile sia dalla macchina che dall'uomo, ha un formato standardizzato ed è notevolmente versatile.Ci sono (ci sono stati) sforzi per creare un linguaggio schema per formati binari arbitrari?

Ha anche alcuni svantaggi. È prolisso e non un mezzo molto efficiente per trasferire grandi quantità di dati.

Uno degli aspetti più utili di XML è il linguaggio dello schema. Utilizzando uno schema è possibile generare codice sorgente in qualsiasi linguaggio di programmazione moderno per leggere un formato xml senza il noioso processo di codifica manuale che di solito accompagna la maggior parte degli altri formati di file.

Questo mi ha fatto pensare se esiste un linguaggio di schema per formati di file binari arbitrari e, in caso contrario, sarebbe valsa la pena provare?

Nel caso in cui non sono stato chiaro. Sto chiedendo di una lingua il cui scopo è definire offset di byte, lunghezze di campi e record, delimitatori, ecc. Che possano essere analizzati per generare codice che possa leggere un formato di file conforme a tale specifica.

Dubito di essere il primo a suggerire una tale idea, quindi se siete a conoscenza di progetti o gruppi di lavoro che hanno o stanno attualmente perseguendo quest'area, vi sarei grato.

risposta

1

"schema" e "arbitrario" sono contraddittorie. Specificare offset di byte, lunghezza di campi e record, delimitatori, ecc. Non è "arbitrario".

Gli scambi di byte sono in corso da quando COBOL. EDI è un protocollo ben noto, provato e vero che fa esattamente questo.

WebMethods, uno strumento EDI, ha un parser EDI molto bello incorporato.

+0

"Specifica scostamenti di byte, di campo e di record lunghezze, delimitatori, ecc non è "arbitrario"." No, ma il formato del file definito da tale specifica è. Forse "General Purpose" sarebbe stata una scelta migliore di parole. Se ti riferisci all'EDI come specificato dagli standard X12, cercavo qualcosa di un po 'meno burocratico. Chiunque può creare e utilizzare uno schema xml senza la necessità di inviarlo ad un corpo standard per l'approvazione. –

+0

Ma devi comunicarlo ai consumatori. Anche avere metadati integrati non significa che sia sempre chiaro e comprensibile. Ogni azienda che utilizza protocolli basati su record è libera di crearne una senza inviarla a un organismo di standard; devono identificare i consumatori in modo che non debbano indovinare. – duffymo

1

Sì, diverse persone hanno provato a farlo.

Uno di questi tentativi è Binary Format Description. Un altro è Data Format Description Language. Non sono sicuro di quanto uno sia realmente pratico, però.

+1

C'è anche BinX, il linguaggio di descrizione XML binario: http://www.edikt.org.uk/binx/ –

0

In breve, no. A meno che non contiate i linguaggi di programmazione come "lingue dello schema". XML è molto strutturato indipendentemente dallo schema. I formati binari possono essere assolutamente qualsiasi cosa. Considera i vecchi formati di MS Office in cui si trattava essenzialmente di un dump di memoria delle strutture di dati grezzi utilizzate in fase di esecuzione. Se consenti ai linguaggi di programmazione, allora puoi - e fai - creare un parser in questo :-) Per quanto riguarda i file binari compressi: zip, jpeg, WebM? Come e perché un linguaggio schema vorrebbe racchiudere questo tipo di cose?

+0

Certo, alcuni formati binari possono essere complessi per definire formalmente l'uso di un linguaggio dichiarativo. Lo stesso vale per alcuni formati xml. –

+2

Il motivo per cui è abbastanza ovvio per me, così puoi aprire il file e vedere i pezzi importanti con cui sei in grado di giocherellare senza romperlo. Metadati per esempio. Inoltre, zip è un formato ben definito. L'editor "010 Editor" fornisce un'implementazione di ciò che l'OP sta cercando e viene fornito con alcuni script di esempio incluso uno che analizza i file zip. – Jimbo

Problemi correlati