Naming { public static boolean isQname(String s) { int len = s.length(); if (len == 0) return false; if (!isNameStartCharNs(s.charAt(0))) return false; for (int i = 1; i < len; i++) { char c = s.charAt(i); if (!isNameCharNs(c)) { if (c == ':' && ++i < len && isNameStartCharNs(s.charAt(i))) { for (++i; i < len; i++) if (!isNameCharNs(s.charAt(i))) return false; return true; } return false; } } return true; } private  Naming(); static boolean isName(String s); static boolean isNmtoken(String s); static boolean isNcname(String s); static boolean isQname(String s);  }
@Test public void testIsQname() { Assert.assertFalse(Naming.isQname("foo::")); }