/// <summary> /// Checks if XML document has one root element /// </summary> /// <param name="document"></param> private void CheckDocumentElement(DOM.Document document) { int rootElementCount = 0; foreach (var entity in document.Entities) { if (entity is DOM.Element) { rootElementCount++; } var scope = entity as Scope; if (scope != null) { rootElementCount += CalcNumOfRootElements(scope); } if (entity is DOM.Alias) { rootElementCount += CalcNumOfRootElements((Alias)entity); } if (rootElementCount > 1) { break; } } if (rootElementCount == 0) { Context.AddError(CompilerErrorFactory.DocumentMustHaveOneRootElement((Document)document, document.Module.FileName, " at least")); } else if (rootElementCount > 1) { Context.AddError(CompilerErrorFactory.DocumentMustHaveOneRootElement((Document)document, document.Module.FileName, " only")); } }