Index: trunk/scripts/SyncEditorLayerIndex.groovy
===================================================================
--- trunk/scripts/SyncEditorLayerIndex.groovy	(revision 14444)
+++ trunk/scripts/SyncEditorLayerIndex.groovy	(revision 14554)
@@ -288,7 +288,11 @@
                 + (getOverlay(e) ? " overlay=\"true\"" : "" )
                 + ">\n")
-            stream.write "        <name>${cdata(getName(e), true)}</name>\n"
-            stream.write "        <id>${getId(e)}</id>\n"
             def t
+            if((t = getName(e)))
+                stream.write "        <name>${cdata(t, true)}</name>\n"
+            if((t = getId(e)))
+                stream.write "        <id>$t</id>\n"
+            if((t = getCategory(e)))
+                stream.write "        <category>$t</category>\n"
             if((t = getDate(e)))
                 stream.write "        <date>$t</date>\n"
@@ -363,4 +367,12 @@
 
         for (def e : josmEntries) {
+            if(!getUrl(e)) {
+              myprintln "+++ JOSM-Entry without URL: " + getDescription(e)
+              continue;
+            }
+            if(!getName(e)) {
+              myprintln "+++ JOSM-Entry without Name: " + getDescription(e)
+              continue;
+            }
             def url = getUrlStripped(e)
             if (url.contains("{z}")) {
@@ -920,5 +932,7 @@
             }
             def cat = getCategory(j)
-            if(cat != null && cat != "photo" && cat != "map" && cat != "historicmap" && cat != "osmbasedmap" && cat != "historicphoto" && cat != "other") {
+            if(cat == null) {
+                myprintln "* No category: ${getDescription(j)}"
+            } else if(cat != "photo" && cat != "map" && cat != "historicmap" && cat != "osmbasedmap" && cat != "historicphoto" && cat != "other") {
                 myprintln "* Strange category ${cat}: ${getDescription(j)}"
             }
