public IEnumerable<ContentValidation.IValidator> ExtractValidators(
     XDocument xdoc
     )
 {
     var xmlnsmgr = new System.Xml.XmlNamespaceManager(new System.Xml.NameTable());
     // Extract namespace details
     foreach (var node in xdoc.XPathSelectElements("/contentValidators/namespaces/add"))
     {
         xmlnsmgr.AddNamespace
             (
             node.Attribute("prefix").Value,
             node.Attribute("namespace").Value
             );
     }
     // Extract document validators
     foreach (var node in xdoc.XPathSelectElements("/contentValidators/documentValidation"))
     {
         var d = new ContentValidation.DocumentValidator()
         {
             NamespaceManager = xmlnsmgr
         };
         if (null != this.Logs)
             foreach (var l in this.Logs)
                 d.Logs.Add(l);
         if (null != this.TimedLogs)
             foreach (var l in this.TimedLogs)
                 d.TimedLogs.Add(l);
         foreach (var validatorNode in node.XPathSelectElements("./*"))
         {
             var v = this.ExtractValidator(validatorNode);
             v.NamespaceManager = xmlnsmgr;
             d.Validators.Add(v);
         }
         yield return d;
     }
     // Extract element validators
     foreach (var node in xdoc.XPathSelectElements("/contentValidators/elementValidation"))
     {
         var selector = node.Attribute("selector").Value;
         var e = new ContentValidation.ElementValidator()
         {
             NamespaceManager = xmlnsmgr,
             XPathSelector = selector
         };
         if (null != this.Logs)
             foreach (var l in this.Logs)
                 e.Logs.Add(l);
         if (null != this.TimedLogs)
             foreach (var l in this.TimedLogs)
                 e.TimedLogs.Add(l);
         foreach (var validatorNode in node.XPathSelectElements("./*"))
         {
             var v = this.ExtractValidator(validatorNode);
             v.NamespaceManager = xmlnsmgr;
             e.Validators.Add(v);
         }
         yield return e;
     }
 }
        public IEnumerable <ContentValidation.IValidator> ExtractValidators
        (
            XDocument xdoc
        )
        {
            var xmlnsmgr = new System.Xml.XmlNamespaceManager(new System.Xml.NameTable());

            // Extract namespace details
            foreach (var node in xdoc.XPathSelectElements("/contentValidators/namespaces/add"))
            {
                xmlnsmgr.AddNamespace
                (
                    node.Attribute("prefix").Value,
                    node.Attribute("namespace").Value
                );
            }
            // Extract document validators
            foreach (var node in xdoc.XPathSelectElements("/contentValidators/documentValidation"))
            {
                var d = new ContentValidation.DocumentValidator()
                {
                    NamespaceManager = xmlnsmgr
                };
                if (null != this.Logs)
                {
                    foreach (var l in this.Logs)
                    {
                        d.Logs.Add(l);
                    }
                }
                if (null != this.TimedLogs)
                {
                    foreach (var l in this.TimedLogs)
                    {
                        d.TimedLogs.Add(l);
                    }
                }
                foreach (var validatorNode in node.XPathSelectElements("./*"))
                {
                    var v = this.ExtractValidator(validatorNode);
                    v.NamespaceManager = xmlnsmgr;
                    d.Validators.Add(v);
                }
                yield return(d);
            }
            // Extract element validators
            foreach (var node in xdoc.XPathSelectElements("/contentValidators/elementValidation"))
            {
                var selector = node.Attribute("selector").Value;
                var e        = new ContentValidation.ElementValidator()
                {
                    NamespaceManager = xmlnsmgr,
                    XPathSelector    = selector
                };
                if (null != this.Logs)
                {
                    foreach (var l in this.Logs)
                    {
                        e.Logs.Add(l);
                    }
                }
                if (null != this.TimedLogs)
                {
                    foreach (var l in this.TimedLogs)
                    {
                        e.TimedLogs.Add(l);
                    }
                }
                foreach (var validatorNode in node.XPathSelectElements("./*"))
                {
                    var v = this.ExtractValidator(validatorNode);
                    v.NamespaceManager = xmlnsmgr;
                    e.Validators.Add(v);
                }
                yield return(e);
            }
        }