The FpMLRuleSet is the abstract base class used by all other FpML rule sets.
상속: HandCoded.Xml.Logic
        /// <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));
        }
예제 #3
0
 /// <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));
 }