return null;
}
// In case of a list, then applies the part on each element
if( node instanceof NodeListImpl ) {
NodeListImpl result = new NodeListImpl(16);
for (Iterator iter = ((NodeListImpl) node).iterator(); iter.hasNext();) {
Object res = evaluatePart(iter.next(), part, namespaceContext);
if (res instanceof NodeListImpl) {
result.addAll((NodeListImpl) res);
} else if (res != null) {
result.add(res);
}
}
return (result.isEmpty()) ? null : result;
}
Node nodeObj = (Node) node;
if (part.getName().equals(".")) {
return nodeObj;
}
if (part.getName().equals("..")) {
return nodeObj.getParentNode();
}
if (part instanceof AttributePart) {
if (node instanceof Element) {
if (StringUtil.isEmpty(part.getPrefix())) {
return ((Element)node).getAttributeNode(part.getName());
} else {
String nsURI = getNamespaceURI(namespaceContext,part.getPrefix());
return ((Element)node).getAttributeNodeNS(nsURI, part.getName());
}
}
return null;
}
// process child nodes
if (node instanceof Document) {
Document doc = (Document) node;
Element elem = doc.getDocumentElement();
if (elem != null && equalsName(namespaceContext, part, elem)) {
return elem;
}
return null;
}
int index = 0;
if (part instanceof IndexedElementPart) {
index = ((IndexedElementPart) part).getIndex();
if (index < 1) {
String message = "Invalid predicate {0}, XPath predicates are 1-based."; // $NLS-XmlSimpleExpression.Invalidpredicate0XPathpredicatesa-1$
message = StringUtil.format(message, new Object[] { Integer.valueOf(index) });
throw new IllegalArgumentException(message);
}
}
NodeList content = nodeObj.getChildNodes();
Node resultObject = null;
NodeListImpl resultList = null;
int found = 0;
int len = content.getLength();
for (int i = 0; i < len; i++) {
Node childNode = content.item(i);
if (equalsName(namespaceContext, part, childNode)) {
found++;
if(index==0 || index==found) {
if(resultObject==null) {
resultObject = childNode;
} else {
if(resultList==null) {
resultList = new NodeListImpl();
resultList.add(resultObject);
}
resultList.add(childNode);
}
}
}
}
if (resultList!=null) {