in src/main/java/org/apache/commons/jxpath/ri/model/jdom/JDOMNodePointer.java [180:222]
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(getLocalName(node))) {
final String nodeNS = 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;
}