Существуют (были) какие-либо попытки создать язык схемы для произвольных двоичных форматов?

XML имеет много преимуществ. Он как машинный, так и удобный для пользователя, имеет стандартизованный формат и отличается удивительной универсальностью.

Он также имеет некоторые недостатки. Это подробное и не очень эффективное средство передачи больших объемов данных.

Одним из наиболее полезных аспектов XML является язык схемы. Используя схему, вы можете генерировать исходный код на любом современном языке программирования для чтения XML-формата без утомительного процесса ручного кодирования, которое обычно сопровождает большинство других форматов файлов.

Это заставило меня задуматься о том, существует ли язык схемы для произвольных форматов двоичных файлов, а если нет, то стоит ли это делать?

На всякий случай я был неясен. Я спрашиваю о языке, целью которого является определение смещений байтов, полей и длин записей, разделителей и т.д., Которые могут быть проанализированы для генерации кода, который будет читать формат файла, соответствующий этой спецификации.

Я сомневаюсь, что я первый предложил такую ​​идею, поэтому, если вы знаете какие-либо проекты или рабочие группы, которые или сейчас занимаются этой областью, я был бы благодарен.

4 ответа

"схема" и "произвольные" противоречивы. Указание смещений байтов, длины полей и записей, разделителей и т.д. Не является "произвольным".

Байт смещения существует с COBOL. EDI - это хорошо известный, проверенный и достоверный протокол, который делает именно это.

WebMethods, инструмент EDI, имеет очень хороший парсер EDI, встроенный в него.


Да, несколько человек пытались это сделать.

Одна из таких попыток Описание двоичного формата. Другой - Язык описания формата данных. Я не уверен, насколько практичен любой на самом деле.


Короче говоря, нет. Если вы не считаете языки программирования "языками схемы". XML очень структурирован независимо от схемы. Бинарные форматы могут быть абсолютно любыми. Рассмотрим старые форматы офисных офисов MS, где он по существу является дампом памяти необработанных структур данных, используемых во время выполнения. Если вы разрешаете языки программирования, вы можете - и делать - создавать парсер в этом:-) Что относительно сжатых двоичных файлов: zip, jpeg, WebM? Как и почему язык схемы хочет охватить эти типы вещей?


Проект Epidal.BeeSchema, по-видимому, соответствует вашим требованиям.

https://github.com/Epidal/BeeSchema

licensed under cc by-sa 3.0 with attribution.