boolean canBeWalkedInNaturalDocOrderStatic ( ) { if ( null != m_firstWalker ) { AxesWalker walker = m_firstWalker ; int prevAxis = - 1 ; boolean prevIsSimpleDownAxis = true ; for ( int i = 0 ; null != walker ; i ++ ) { int axis = walker . getAxis ( ) ; if ( walker . isDocOrdered ( ) ) { boolean isSimpleDownAxis = ( ( axis == Axis . CHILD ) || ( axis == Axis . SELF ) || ( axis == Axis . ROOT ) ) ; // Catching the filtered list here is only OK because // FilterExprWalker#isDocOrdered() did the right thing. if ( isSimpleDownAxis || ( axis == - 1 ) ) walker = walker . getNextWalker ( ) ; else { boolean isLastWalker = ( null == walker . getNextWalker ( ) ) ; if ( isLastWalker ) { if ( walker . isDocOrdered ( ) && ( axis == Axis . DESCENDANT || axis == Axis . DESCENDANTORSELF || axis == Axis . DESCENDANTSFROMROOT || axis == Axis . DESCENDANTSORSELFFROMROOT ) || ( axis == Axis . ATTRIBUTE ) ) return true ; } return false ; } } else return false ; } return true ; } return false ; }
Tell if the nodeset can be walked in doc order via static analysis .