private void getChildNames(IXsdNode node, ICollection <XsdElement> result) { var kids = node.GetChildren(); foreach (IXsdNode xsdNode in kids) { if (xsdNode is XsdElement) { result.Add((XsdElement)xsdNode); } else if (xsdNode is XsdAllSequenceChoice) { XsdAllSequenceChoice list = (XsdAllSequenceChoice)xsdNode; getChildNames(list, result); } } if ((node as IXsdHasType)?.TypeTarget != null) { IXsdHasType n = (IXsdHasType)node; getChildNames(n.TypeTarget, result); } if ((node as IXsdHasRef)?.RefTarget != null) { IXsdHasRef n = (IXsdHasRef)node; getChildNames(n.RefTarget, result); } }
private void expandReferences() { foreach (IXsdNode node in GetAllNodes()) { if (node is IXsdHasAttribute) { ICollection <XsdAttribute> col = ((IXsdHasAttribute)node).GetAttributes(); foreach (XsdAttribute xsdAttribute in col) { if (xsdAttribute.TypeTarget == null) { xsdAttribute.TypeTarget = getNodeByName(xsdAttribute.TypeName); } } } IXsdHasRef refable = node as IXsdHasRef; if (refable != null && refable.RefTarget == null) { refable.RefTarget = getNodeByName(refable.RefName); } IXsdHasType typeable = node as IXsdHasType; if (typeable != null && typeable.TypeTarget == null) { typeable.TypeTarget = getNodeByName(typeable.TypeName); } XsdExtension extension = node as XsdExtension; if (extension != null && extension.BaseTarget == null) { extension.BaseTarget = getNodeByName(extension.Base); } } }