/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import javax.xml.xpath.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
"<?xml version='1.0' encoding='UTF-8'?>"+
"<xyz xmlns=\"blah\">"+
"<a>"+
" <b>"+
" <c>X:1 Y:0</c>"+
" <c>X:1 Y:0</c>"+
" <c>X:2 Y:0</c>"+
" </b>"+
" <b>"+
" <c>X:1 Y:0</c>"+
" <c>X:2 Y:0</c>"+
" </b>"+
"</a>"+
"</xyz>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression xpr = xpath.compile("count(//*[local-name()='xyz']/*[local-name()='a']/*[local-name()='b']/*[local-name()='c'])");
System.
out.
println(xpr.
evaluate(doc, XPathConstants.
NUMBER));
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZheC54bWwueHBhdGguKjsKaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLio7CmltcG9ydCBvcmcudzNjLmRvbS4qOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKClN0cmluZyB4bWwgPQogICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+IisKICAgICI8eHl6IHhtbG5zPVwiYmxhaFwiPiIrCiAgICAiPGE+IisKICAgICIgIDxiPiIrCiAgICAiICAgIDxjPlg6MSBZOjA8L2M+IisKICAgICIgICAgPGM+WDoxIFk6MDwvYz4iKwogICAgIiAgICA8Yz5YOjIgWTowPC9jPiIrCiAgICAiICA8L2I+IisKICAgICIgIDxiPiIrCiAgICAiICAgIDxjPlg6MSBZOjA8L2M+IisKICAgICIgICAgPGM+WDoyIFk6MDwvYz4iKwogICAgIiAgPC9iPiIrCiAgICAiPC9hPiIrCiAgICAiPC94eXo+IjsKCkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKRG9jdW1lbnRCdWlsZGVyIGJ1aWxkZXIgPSBmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOwpEb2N1bWVudCBkb2MgPSBidWlsZGVyLnBhcnNlKG5ldyBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtKHhtbC5nZXRCeXRlcygpKSk7ClhQYXRoIHhwYXRoID0gWFBhdGhGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3WFBhdGgoKTsKWFBhdGhFeHByZXNzaW9uIHhwciA9IHhwYXRoLmNvbXBpbGUoImNvdW50KC8vKltsb2NhbC1uYW1lKCk9J3h5eiddLypbbG9jYWwtbmFtZSgpPSdhJ10vKltsb2NhbC1uYW1lKCk9J2InXS8qW2xvY2FsLW5hbWUoKT0nYyddKSIpOwpTeXN0ZW0ub3V0LnByaW50bG4oeHByLmV2YWx1YXRlKGRvYywgWFBhdGhDb25zdGFudHMuTlVNQkVSKSk7CgoKCgoJfQp9