Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java	(revision 16615)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java	(revision 16616)
@@ -44,5 +44,5 @@
 
     // CHECKSTYLE.OFF: SingleSpaceSeparator
-    /** Role ''{0}'' is not in templates ''{1}'' */
+    /** Role ''{0}'' is not among expected values ''{1}'' */
     public static final int ROLE_UNKNOWN     = 1701;
     /** Empty role found when expecting one of ''{0}'' */
@@ -320,5 +320,9 @@
         for (String key : map.keySet()) {
             if (allroles.keySet().stream().noneMatch(role -> role.isRole(key))) {
-                String templates = allroles.keySet().stream().map(r -> r.key).collect(Collectors.joining("/"));
+                String templates = allroles.keySet().stream()
+                        .map(r -> r.key)
+                        .map(r -> r == null || r.isEmpty() ? tr("<empty>") : r)
+                        .distinct()
+                        .collect(Collectors.joining("/"));
                 List<OsmPrimitive> primitives = new ArrayList<>(n.findRelationMembers(key));
                 primitives.add(0, n);
@@ -326,5 +330,5 @@
                 if (!key.isEmpty()) {
                     errors.add(TestError.builder(this, Severity.WARNING, ROLE_UNKNOWN)
-                            .message(ROLE_VERIF_PROBLEM_MSG, marktr("Role ''{0}'' is not in templates ''{1}''"), key, templates)
+                            .message(ROLE_VERIF_PROBLEM_MSG, marktr("Role ''{0}'' is not among expected values ''{1}''"), key, templates)
                             .primitives(primitives)
                             .build());
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.java	(revision 16615)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.java	(revision 16616)
@@ -10,4 +10,6 @@
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
@@ -78,5 +80,5 @@
         List<TestError> errors = testRelation(r);
         assertEquals(1, errors.size());
-        assertEquals("Role 'outer2' is not in templates 'outer/inner'", errors.get(0).getDescription());
+        assertEquals("Role 'outer2' is not among expected values 'outer/inner'", errors.get(0).getDescription());
     }
 
@@ -154,5 +156,20 @@
         List<TestError> errors = testRelation(r);
         assertEquals(1, errors.size());
-        assertEquals("Role 'level_x' is not in templates 'outline/part/ridge/edge/entrance/level_-?\\d+'", errors.get(0).getDescription());
+        assertEquals("Role 'level_x' is not among expected values 'outline/part/ridge/edge/entrance/level_-?\\d+'",
+                errors.get(0).getDescription());
+    }
+
+    @Test
+    public void testHikingRouteMembers() {
+        Relation r = createRelation("type=route route=hiking");
+        r.addMember(new RelationMember("", OsmUtils.createPrimitive("way highway=path")));
+        r.addMember(new RelationMember("route", OsmUtils.createPrimitive("way highway=path"))); // fails
+        r.addMember(new RelationMember("guidepost", new Node())); // fails
+
+        List<TestError> errors = testRelation(r);
+        assertEquals(2, errors.size());
+        assertEquals("Role of relation member does not match template expression 'information=guidepost' in preset Hiking Route",
+                errors.get(0).getDescription());
+        assertEquals("Role 'route' is not among expected values '<empty>/guidepost'", errors.get(1).getDescription());
     }
 
