EXI Prototype for C/C++ - Features
Conformance and Main Features (EXI)
The OSS EXI Tools for C/C++ are a complete implementation of the Efficient XML Interchange (EXI) Format 1.0 (Second Edition) W3C Recommendation. As such, they fully support the following features of EXI:
- schema-informed EXI streams
- schema-informed EXI streams using only XSD built-in datatypes
- schemaless EXI streams
- document / fragment
- all the alignment options (bit-packed, byte-aligned, precompression)
- EXI compression (use of DEFLATE)
- strict / non-strict (deviations from the schema)
- fidelity options (preserve comments, pis, dtd, prefixes, lexical values)
- handling of xsi:type and xsi:nil
- handling of self-contained elements (both when encoding and when decoding)
- reading and writing an EXI option document included in the EXI stream header
- datatype representation mappings
- derivation of restricted character sets from pattern facets,
as well as all the other features required for conformance to the EXI Recommendation, both when encoding and when decoding an EXI stream.
Conformance and Main Features (XML)
The OSS EXI Tools for C/C++ are also a conforming implementation of the Extensible Markup Language (XML) 1.0 (Fifth Edition) W3C Recommendation as a non-validating processor, with the following features:
- they support the following character encodings: UTF-8, UTF-16 little-endian, and UTF-16 big-endian (no others)
- they read and process the internal DTD subset
- they can read and process the external DTD subset, all external entities, and all parameter entities
- they supply default attributes and perform whitespace normalization of attribute values according to the attribute type specified in the DTD
- they support reading and writing both XML documents and XML fragments
- they support the use of namespaces in conformance with the Namespaces in XML 1.0 (Third Edition) W3C Recommendation
- they also support XML documents and fragments that do not use namespaces.