/// <inheritdoc cref="ElementSelector"/> public bool CanBeCompared(XmlElement controlElement, XmlElement testElement) { XmlElement currentControl = controlElement; XmlElement currentTest = testElement; // match on element names only for leading levels for (int currentLevel = 0; currentLevel <= levels - 2; currentLevel++) { if (!ElementSelectors.ByName(currentControl, currentTest) || !currentControl.HasChildNodes || !currentTest.HasChildNodes) { return(false); } XmlNode n1 = GetFirstEligibleChild(currentControl); XmlNode n2 = GetFirstEligibleChild(currentTest); if (n1 is XmlElement && n2 is XmlElement) { currentControl = n1 as XmlElement; currentTest = n2 as XmlElement; } else { return(false); } } // finally compare the level containing the text child node return(ElementSelectors.ByNameAndText(currentControl, currentTest)); }