public void CompileHTMLFile(String inputFileName)
        {
            if (File.Exists(inputFileName))
            {
                XmlDocument document = new XmlDocument();
                document.Load(inputFileName);

                HTMLParserContext parseContext = new HTMLParserContext();
                parseContext.IntermediateDocument = new XmlDocument();
                parseContext.IntermediateRootElement = parseContext.IntermediateDocument.CreateNode(XmlNodeType.Element, "xml", "");
                //From here this is recursive
                ProcessCurrentXmlDocument(document, parseContext);
                //Recurse through the includes above for other includes, definitions and styles before moving on to transforming the body element, we might need these to be present before we can read that node
                foreach (String includeFileName in parseContext.getIncludeFileNames()) //this will break when included files start including files :(
                {
                    String fileName = includeFileName;
                    if (!Path.IsPathRooted(fileName))
                    {
                        fileName = m_settings.m_rootPath + includeFileName;
                    }
                    if (File.Exists(fileName))
                    {
                        XmlDocument includedDocument = new XmlDocument();
                        includedDocument.Load(fileName);
                        ProcessCurrentXmlDocument(includedDocument, parseContext);
                    }
                    else
                    {
                        Console.WriteLine("Trying to read file {0}, but the file doesn't exist", includeFileName);
                    }
                }

                foreach(XmlNode childNode in parseContext.IntermediateRootElement.ChildNodes)
                {
                    Console.WriteLine("Body Node being dealt with: {0}", childNode.Name);
                    walkBodyNodes(childNode, parseContext);
                }
                parseContext.IntermediateDocument.Save(m_settings.m_rootPath + "intermediate.xml");
            }
        }