This directory contains the xsl stylesheets used to generate the code from the OpenAMQ protocol specification. They require an XSLT2.0 processor, currently Saxon 8 is used. The generation process is controlled by the framing.xsl stylesheet. This performs several phases of transformation, using the other stylesheets. The transformation in each phase is defined in a separate file, and these are designed to also allow then to be run individually. The generation takes the amq.asl as input, it also requires that the path to the directory where the base asl definitions reside (those definitions that the main amq.asl defintion inherits from) be passed in via a paramter called asl_base. The files involved are as follows: framing.xsl The control file for the entire generation process prepare1.xsl Resolves the separate files that make up the protocol definition, building a single tree containing all the information as a set of 'frame' elements, each of which has attributes for its name, and ids for the class and method it refers to and contains zero or more field elements. A method id is generated based on the order of the method elements within the class elements in the original specification. The class id is taken from the enclosing class element. prepare2.xsl Resolves domains into their corresponding types. (This is much easier when all the information is in a single tree, hence the separate frame). prepare3.xsl Converts names into valid java names and augments the tree to include information that makes the subsequent generation phase simpler e.g. the index of boolean fields as several boolean flags are combined into a single byte. (This is easier once the domains have been resolved, hence the separate phase). java.xsl Generates java classes for each frame, and a registry of all the frames to a 'magic' number generated from their class and method id. utils.xsl Contains some utility methods for e.g. producing valid java names. For debugging the framing.xsl can output the intermediary files. This can be enabled by uncommenting the relevant lines (a comment explaining this is provided inline).