/// <summary> /// Evaluates this <see cref="Precondition"/> against the contents of the /// indicated <see cref="NodeIndex"/>. /// </summary> /// <param name="nodeIndex">The <see cref="NodeIndex"/> of a <see cref="XmlDocument"/></param> /// <param name="cache">A cache of previously evaluated precondition results.</param> /// <returns>A <see cref="bool"/> value indicating the applicability of this /// <see cref="Precondition"/> to the <see cref="XmlDocument"/>.</returns> public override bool Evaluate(NodeIndex nodeIndex, Dictionary <Precondition, bool> cache) { if (nodeIndex.HasTypeInformation) { string ns = FpMLRuleSet.DetermineNamespace(nodeIndex); foreach (string type in types) { XmlNodeList list = nodeIndex.GetElementsByType(ns, type); if ((list != null) && (list.Count > 0)) { return(true); } } } else { foreach (String element in elements) { XmlNodeList list = nodeIndex.GetElementsByName(element); if ((list != null) && (list.Count > 0)) { return(true); } } } return(false); }
/// <summary> /// Validates all the elements registered at construction using the /// <see cref="NodeIndex"/> to locate them as quickly as possible. /// </summary> /// <param name="nodeIndex">The <see cref="NodeIndex"/> of the test document.</param> /// <param name="errorHandler">The <see cref="ValidationErrorHandler"/> used to report issues.</param> /// <returns><c>true</c> if the code values pass the checks, <c>false</c> /// otherwise.</returns> protected override bool Validate(NodeIndex nodeIndex, ValidationErrorHandler errorHandler) { if (nodeIndex.HasTypeInformation) { string ns = FpMLRuleSet.DetermineNamespace(nodeIndex); return(Validate( nodeIndex.GetElementsByType(ns, contextType), nodeIndex.GetElementsByType(ns, targetType), errorHandler)); } return(Validate( nodeIndex.GetElementsByName(contextElements), nodeIndex.GetElementsByName(targetElements), errorHandler)); }
/// <summary> /// Returns a <see cref="XmlNodeList"/> containing all the elements /// defined in the <see cref="NodeIndex"/> that match the context /// specification. /// </summary> /// <param name="nodeIndex">A <see cref="NodeIndex"/> for the test document.</param> /// <returns>A <see cref="XmlNodeList"/> containing all the matching /// <see cref="XmlElement"/> instances, if any.</returns> public XmlNodeList GetMatchingElements(NodeIndex nodeIndex) { return(nodeIndex.GetElementsByType(FpMLRuleSet.DetermineNamespace(nodeIndex), typeName)); }