internal bool MoveToChild(string name, string URN, int depth, ForwardAxis parent) {
// an attribute can never be the same as an element
if (Asttree.IsAttribute(this.curNode)) {
return false;
}
// either moveToParent or moveToChild status will have to be changed into unmatch...
if (this.isMatch) {
this.isMatch = false;
}
if (! AxisStack.Equal (this.curNode.Name, this.curNode.Urn, name, URN)) {
return false;
}
if (this.curDepth == -1) {
SetDepth (depth);
}
else if (depth > this.curDepth) {
return false;
}
// matched ...
if (this.curNode == parent.TopNode) {
this.isMatch = true;
return true;
}
// move down this.curNode
DoubleLinkAxis nowNode = (DoubleLinkAxis) (this.curNode.Next);
if (Asttree.IsAttribute (nowNode)) {
this.isMatch = true; // for attribute
return false;
}
this.curNode = nowNode;
this.curDepth ++;
return false;
}