in src/main/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNodePointer.java [388:437]
public static boolean testNode(
final NodePointer pointer,
final Object node,
final NodeTest test) {
if (test == null) {
return true;
}
if (test instanceof NodeNameTest) {
if (!(node instanceof Element)) {
return false;
}
final NodeNameTest nodeNameTest = (NodeNameTest) test;
final QName testName = nodeNameTest.getNodeName();
final String namespaceURI = nodeNameTest.getNamespaceURI();
final boolean wildcard = nodeNameTest.isWildcard();
final String testPrefix = testName.getPrefix();
if (wildcard && testPrefix == null) {
return true;
}
if (wildcard
|| testName.getName()
.equals(JDOMNodePointer.getLocalName(node))) {
final String nodeNS = JDOMNodePointer.getNamespaceURI(node);
return equalStrings(namespaceURI, nodeNS) || nodeNS == null
&& equalStrings(testPrefix, getPrefix(node));
}
return false;
}
if (test instanceof NodeTypeTest) {
switch (((NodeTypeTest) test).getNodeType()) {
case Compiler.NODE_TYPE_NODE :
return true;
case Compiler.NODE_TYPE_TEXT :
return node instanceof Text || node instanceof CDATA;
case Compiler.NODE_TYPE_COMMENT :
return node instanceof Comment;
case Compiler.NODE_TYPE_PI :
return node instanceof ProcessingInstruction;
default:
return false;
}
}
if (test instanceof ProcessingInstructionTest && node instanceof ProcessingInstruction) {
final String testPI = ((ProcessingInstructionTest) test).getTarget();
final String nodePI = ((ProcessingInstruction) node).getTarget();
return testPI.equals(nodePI);
}
return false;
}