예제 #1
0
        public XQueryStepExpr(XQueryPathExprType type, XQueryContext queryContext)
            : base(queryContext)
        {
            m_type = type;
            switch (m_type)
            {
                case XQueryPathExprType.Self:
                    m_iter = new PathExprIterator(SelfIterator);
                    break;

                case XQueryPathExprType.Child:
                    m_iter = new PathExprIterator(ChildIterator);
                    break;

                case XQueryPathExprType.Descendant:
                case XQueryPathExprType.DescendantOrSelf:
                    m_iter = new PathExprIterator(DescendantIterator);
                    break;

                case XQueryPathExprType.Attribute:
                    m_iter = new PathExprIterator(AttributeIterator);
                    break;

                case XQueryPathExprType.Following:
                    m_iter = new PathExprIterator(FollowingIterator);
                    break;

                case XQueryPathExprType.FollowingSibling:
                    m_iter = new PathExprIterator(FollowingSiblingIterator);
                    break;

                case XQueryPathExprType.Parent:
                    m_iter = new PathExprIterator(ParentIterator);
                    break;

                case XQueryPathExprType.Ancestor:
                case XQueryPathExprType.AncestorOrSelf:
                    m_iter = new PathExprIterator(AncestorIterator);
                    break;

                case XQueryPathExprType.Preceding:
                    m_iter = new PathExprIterator(PrecedingIterator);
                    break;

                case XQueryPathExprType.PrecedingSibling:
                    m_iter = new PathExprIterator(PrecedingSiblingIterator);
                    break;

                case XQueryPathExprType.Namespace:
                    m_iter = new PathExprIterator(NamespaceIterator);
                    break;

                default:
                    throw new ArgumentException("type");
            }
        }
예제 #2
0
 public XQueryStepExpr(object nodeTest, XQueryPathExprType type, XQueryContext queryContext)
     : this(type, queryContext)
 {
     if (nodeTest is XmlQualifiedNameTest)
         m_nameTest = (XmlQualifiedNameTest)nodeTest;
     else if (nodeTest is XQuerySequenceType)
         m_typeTest = (XQuerySequenceType)nodeTest;
     else
         throw new ArgumentException("nodeTest");
 }