1 line
2.0 KiB
JSON
1 line
2.0 KiB
JSON
{"name":"Libebml","tagline":"a C++ libary to parse EBML files","body":"### EBML – Extensible Binary Markup Language\r\n\r\nEBML was designed to be a simplified binary extension of XML for the purpose of storing and manipulating data in a hierarchical form with variable field lengths.\r\n\r\nIt uses the same paradigms as XML files, meaning that syntax and semantics are separated. So a generic EBML library could read any format based on it. The interpretation of data is up to a specific application that knows how each elements (equivalent of XML tag) has to be handled.\r\n\r\nAmong all the advantages of XML, there are a few limitations compared to what XML can achieve:\r\n\r\n- There is currently no equivalent to a DTD or Schema to define known elements for a document. But we plan on adding such a level.\r\n- No entity can be defined, ie an element that would be replaced by another content. We don't plan to add something like this so far.\r\n- No external include of other files (like CSS, images, etc). It could be easily added as a \"proprietary\" element (not defined in the basic EBML format).\r\n\r\nFor the rest, you have all advantages like:\r\n\r\n- Upward compatibility when the format is updated. Something rare in binary formats, unless you have some unused space in the original format.\r\n- Unlimited size of binary data.\r\n- Very size efficient: only space required for a data is written (unless you specifically require more space for better updating later).\r\n\r\nThere is also one disadvantage commonly said about XML: it's very verbose. That's why you should have default/assumed values in you EBML-based format as much as possible. So you just describe what is really necessary.\r\n\r\nEBML was originally created for the [Matroska](http://www.matroska.org) project. So this is naturally the first format based on EBML to exist. You are therefore encouraged to check the specs to know how to design a format based on EBML.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} |