I recently implemented a standalone FIX message parser in C++ as I wanted to answer a few questions I had myself about the design on the protocol.
To define the protocol [what messages, fields, values are allowed] I use the same XML format that QuickFix and QuickFix/J use. This is a more compactly rendered subset of the information provided in the fixprotocol.org XML repository.
The spec itself is most easily browsed via the foxprotocol.org’s ‘Fiximate’ site, or download the full PDF specification.
I did notice that QuickFix and QuickFix/J seem to come only with FIX 4.0 through FIX 4.4 definitions… After some pain wrangling XML with perl I created FIX50SP2 which should match the most recent FIX specification.
You can find the full source, and the FIX 5 XML definition on the google code project page.
Note : BSD licence, uses gnu C++ on Linux, makefile build, depends on libXML2 for SAX2 parsing of XML
enjoy, and happy gnu year!