Exemple #1
0
        private static void ForEachConstraintEntry <TConstraint, TConstraintData, TConstraintPartData>(
            XmlNamespaceManager nsMan, MyXmlElement scope, TConstraint schemaConstraint,
            Func <MyXmlElement, TConstraint, TConstraintData> constraintInitAction,
            Func <XmlSchemaXPath, int, TConstraintData, TConstraintPartData> constraintPartInitAction,
            Action <MyXmlAttribute, TConstraintPartData> constraintPartAction
            )
            where TConstraint : XmlSchemaIdentityConstraint
        {
            using (NsScope(nsMan, schemaConstraint))
            {
                List <MyXmlElement> elements;

                var constraintData = constraintInitAction(scope, schemaConstraint);

                using (NsScope(nsMan, schemaConstraint.Selector))
                {
                    elements = scope.SelectNodes(schemaConstraint.Selector.XPath, nsMan).OfType <MyXmlElement>().ToList();
                }

                int n = 0;
                foreach (var schemaConstraintKeyField in schemaConstraint.Fields.OfType <XmlSchemaXPath>())
                {
                    var constraintPartData = constraintPartInitAction(schemaConstraintKeyField, n, constraintData);

                    using (NsScope(nsMan, schemaConstraintKeyField))
                    {
                        foreach (var element in elements)
                        {
                            var attribute = element.SelectSingleNode(schemaConstraintKeyField.XPath, nsMan) as MyXmlAttribute;
                            if (attribute != null)
                            {
                                constraintPartAction(attribute, constraintPartData);
                            }
                        }
                    }

                    n++;
                }
            }
        }
Exemple #2
0
 public XmlScopeData(MyXmlElement scopeElement)
 {
     this.ScopeElement = scopeElement;
 }