// /// /// private IQuery ProcessAxis(Axis root , IQuery qyInput) { IQuery result = null; switch (root.TypeOfAxis) { case Axis.AxisType.Attribute: result = new AttributeQuery(qyInput, root.Name, root.Prefix, root.Type); break; case Axis.AxisType.Self: result = new XPathSelfQuery(qyInput, root.Name, root.Prefix, root.Type); break; case Axis.AxisType.Child: result = new ChildQuery( qyInput, root.Name, root.Prefix, root.Type); break; case Axis.AxisType.Descendant: case Axis.AxisType.DescendantOrSelf: result = new DescendantQuery(qyInput, root.Name, root.Prefix, root.Type); break; default: throw new XPathReaderException("xpath is not supported!"); } return result; }