PatternMatcher implements Cloneable, Matcher { public String getErrorMessage() { return errorMessage; } PatternMatcher(Pattern start, ValidatorPatternBuilder builder); private  PatternMatcher(PatternMemo memo, Shared shared); Matcher start(); boolean equals(Object obj); int hashCode(); final Object clone(); Matcher copy(); boolean matchStartDocument(); boolean matchEndDocument(); boolean matchStartTagOpen(Name name, String qName, MatchContext context); boolean matchAttributeName(Name name, String qName, MatchContext context); boolean matchAttributeValue(String value, Name name, String qName, MatchContext context); boolean matchStartTagClose(Name name, String qName, MatchContext context); boolean matchTextBeforeEndTag(String string, Name name, String qName, MatchContext context); boolean matchTextBeforeStartTag(String string, MatchContext context); boolean matchUntypedText(MatchContext context); boolean isTextTyped(); boolean matchEndTag(Name name, String qName, MatchContext context); String getErrorMessage(); boolean isValidSoFar(); com.thaiopensource.relaxng.match.NameClass possibleStartTagNames(); com.thaiopensource.relaxng.match.NameClass possibleAttributeNames(); Set<Name> requiredElementNames(); Set<Name> requiredAttributeNames();  }
@Test(dataProvider = "missingNamespacedAttribute") public void testErrorMessageAttributeNames(Matcher matcher) { Assert.assertEquals(matcher.getErrorMessage(), "element \"root\" missing required attribute \"ns:foo\" (with xmlns:ns=\"http: }