XML - eXtensible Markup Language
This is a text based document format which accommodates a rich set of data to be represented using a series of tags and objects. The Tags take the form of a keyword at the start and end with value data in between, for example <SCENE> 5 </SCENE>. This indicates that the parameter SCENE has the value 5. In this way, it is closely related to HTML. Like HTML, XML also allows nested Objects, which further enhance the ability to communicate rich data sets in a human readable fashion. For example, a TRACK object in iXML could be:
<CHANNEL_INDEX> 1 </CHANNEL_INDEX>
<NAME> My Track Name </NAME>
One of the benefits of XML is that the various tags can be present or not, and things still work nicely, which allows for a very flexible format which can be implemented simply, or in full with forward and reverse compatibility as new tags are added.
A RIFF file is a binary data format where the overall file comprises sections or 'Chunks' containing different sets of data. The overall idea is that each chunk has a header at the start which includes an ID to tell you what the chunk type is, and a size. If a file reader does not recognise the Chunk ID (it's something new they are not aware of), they can simply 'skip' over the chunk (using the chunk size as an offset) and move on to the next chunk. Like XML, this allows the RIFF format to expand, containing new Chunks which may not be understood by existing applications, but in the knowledge that those applications will simply skip over the new chunk and continue to work. However, once existing applications become aware of the new chunk type they can start interpreting the contents and benefit from the new data. The Broadcast Wave 'bext' chunk is an example of this - the original WAV format did not include a 'bext' chunk, and this was added to create the Broadcast Wave standard, which includes information such as a timestamp. In turn, the iXML chunk has been added to further enhance the metadata which can be carried by a humble WAV file.