Index: /trunk/data/validator/highway.mapcss
===================================================================
--- /trunk/data/validator/highway.mapcss	(revision 12594)
+++ /trunk/data/validator/highway.mapcss	(revision 12595)
@@ -129,10 +129,12 @@
 /* #11270 */
 way[railway =~ /^(light_rail|miniature|narrow_gauge|preserved|rail)$/] > node { set .is_in_railway }
-way[highway =~ /^(bridleway|cycleway|footway|path|steps)$/] > node[railway != crossing].is_in_railway {
+way[highway =~ /^(bridleway|cycleway|footway|path|steps)$/] > node { set .is_in_minor_road }
+way[highway =~ /^(bus_guideway|living_street|motorway|pedestrian|primary|raceway|residential|road|secondary|service|tertiary|track|trunk|unclassified)/] > node { set .is_in_major_road }
+node[railway!=crossing].is_in_railway.is_in_minor_road!.is_in_major_road {
   throwWarning: tr("pedestrian railway crossing without {0}", "{0.tag}");
   group: tr("missing tag");
   fixAdd: "railway=crossing";
 }
-way[highway =~ /^(bus_guideway|living_street|motorway|pedestrian|primary|raceway|residential|road|secondary|service|tertiary|track|trunk|unclassified)/] > node[railway != level_crossing].is_in_railway {
+node[railway!=level_crossing].is_in_railway.is_in_major_road!.is_in_minor_road {
   throwWarning: tr("railway crossing without {0}", "{0.tag}");
   group: tr("missing tag");
