public IEnumerable<ValidationError> ValidateHtml(HtmlDocument document)
{
var records = new List<ValidationError>();
var headingNodes = new List<HtmlNode>();
PopulateHeadingNodeList(document.DocumentNode, headingNodes);
int currentLevel = 0;
foreach (var headingNode in headingNodes)
{
var expectedLevel = currentLevel + 1;
var foundLevel = int.Parse(headingNode.Name.Replace("h", string.Empty));
if (foundLevel > expectedLevel)
{
var message = string.Format("Illogical heading order: Expected to find <h{0}> but found {1} instead", expectedLevel, headingNode.OuterHtml);
records.Add(new ValidationError(message));
break;
}
currentLevel = foundLevel;
}
return records;
}