Index: trunk/data/defaultpresets.xml
===================================================================
--- trunk/data/defaultpresets.xml	(revision 6571)
+++ trunk/data/defaultpresets.xml	(revision 6572)
@@ -23,4 +23,7 @@
 link: link to the relating map features website
   href: the URL
+
+preset_link: a link to an other preset
+  preset_name: the exact name of the preset to link to
 
 label: simple static text label
@@ -3873,4 +3876,5 @@
             <key key="amenity" value="kindergarten" />
             <text key="name" text="Name" />
+            <preset_link preset_name="Contact (common schema)" />
         </item>
         <item name="School" icon="presets/school.png" type="node,closedway,relation">
@@ -3889,4 +3893,5 @@
             <key key="amenity" value="school" />
             <text key="name" text="Name" />
+            <preset_link preset_name="Contact (common schema)" />
         </item>
         <item name="University" icon="styles/standard/education/university.png" type="node,closedway,relation">
@@ -3904,4 +3909,5 @@
             <key key="amenity" value="university" />
             <text key="name" text="Name" />
+            <preset_link preset_name="Contact (common schema)" />
         </item>
         <item name="College" icon="styles/standard/education/college.png" type="node,closedway,relation">
@@ -3916,4 +3922,5 @@
             <key key="amenity" value="college" />
             <text key="name" text="Name" />
+            <preset_link preset_name="Contact (common schema)" />
         </item>
          <item name="Driving School" icon="styles/standard/education/driving_school.png" type="node,closedway">
@@ -3924,4 +3931,5 @@
             <reference ref="name_operator" />
             <combo key="license_classes" text="License Classes" values="A;A1;B;BE;C,A;A1;B;B1;C;C1;D;D1;BE;CE;C1E;DE;D1E" />
+             <preset_link preset_name="Contact (common schema)" />
         </item>
     </group> <!-- Education -->
Index: trunk/data/tagging-preset.xsd
===================================================================
--- trunk/data/tagging-preset.xsd	(revision 6571)
+++ trunk/data/tagging-preset.xsd	(revision 6572)
@@ -105,4 +105,5 @@
 			<element name="space" type="tns:space" />
 			<element name="link" type="tns:link" />
+			<element name="preset_link" type="tns:preset_link" />
 			<element name="text" type="tns:text" />
 			<element name="combo" type="tns:combo" />
@@ -129,4 +130,9 @@
 		<attribute name="name" use="prohibited" />
 		<anyAttribute processContents="skip" />
+	</complexType>
+
+	<complexType name="preset_link">
+		<attribute name="preset_name" type="string" use="required" />
+		<attribute name="name" use="prohibited" />
 	</complexType>
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java	(revision 6571)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java	(revision 6572)
@@ -40,5 +40,5 @@
      * the corresponding preset when clicked
      */
-    private static class PresetLabelML implements MouseListener {
+    public static class PresetLabelML implements MouseListener {
         final JLabel label;
         final Font hover;
@@ -47,5 +47,5 @@
         final PresetHandler presetHandler;
 
-        PresetLabelML(JLabel lbl, TaggingPreset t, PresetHandler presetHandler) {
+        public PresetLabelML(JLabel lbl, TaggingPreset t, PresetHandler presetHandler) {
             super();
             label = lbl;
@@ -82,4 +82,10 @@
     }
 
+    public static JLabel createLabelForPreset(TaggingPreset t) {
+        JLabel lbl = new JLabel(t.getName() + " …");
+        lbl.setIcon(t.getIcon());
+        return lbl;
+    }
+
     public void updatePresets(final Collection<TaggingPresetType> types, final Map<String, String> tags, PresetHandler presetHandler) {
 
@@ -91,6 +97,5 @@
 
         for (TaggingPreset t : TaggingPreset.getMatchingPresets(types, tags, true)) {
-            JLabel lbl = new JLabel(t.getName() + " …");
-            lbl.setIcon(t.getIcon());
+            final JLabel lbl = createLabelForPreset(t);
             lbl.addMouseListener(new PresetLabelML(lbl, t, presetHandler));
             add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 6571)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 6572)
@@ -11,4 +11,5 @@
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
+import java.awt.event.MouseEvent;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -40,4 +41,5 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -207,4 +209,5 @@
         PresetPanel p = new PresetPanel();
         LinkedList<TaggingPresetItem> l = new LinkedList<TaggingPresetItem>();
+        LinkedList<TaggingPresetItem> presetLink = new LinkedList<TaggingPresetItem>();
         if(types != null){
             JPanel pp = new JPanel();
@@ -221,4 +224,6 @@
             if(i instanceof Link) {
                 l.add(i);
+            } else if (i instanceof TaggingPresetItems.PresetLink) {
+                presetLink.add(i);
             } else {
                 if(i.addToPanel(items, selected)) {
@@ -232,4 +237,13 @@
         }
 
+        // add PresetLink
+        if (!presetLink.isEmpty()) {
+            p.add(new JLabel(tr("Edit also …")), GBC.eol().insets(0, 8, 0, 0));
+        }
+        for(TaggingPresetItem link : presetLink) {
+            link.addToPanel(p, selected);
+        }
+
+        // add Link
         for(TaggingPresetItem link : l) {
             link.addToPanel(p, selected);
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 6571)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 6572)
@@ -12,4 +12,5 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
 import java.io.File;
 import java.lang.reflect.Method;
@@ -48,4 +49,6 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel;
+import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionItemPriority;
@@ -57,4 +60,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
@@ -375,5 +379,5 @@
             }
             if (url != null) {
-                p.add(new UrlLabel(url, locale_text, 2), GBC.eol().anchor(GBC.WEST));
+                p.add(new UrlLabel(url, locale_text, 2), GBC.eol().insets(0, 10, 0, 0));
             }
             return false;
@@ -385,4 +389,34 @@
                     + (href != null ? "href=" + href + ", " : "")
                     + (locale_href != null ? "locale_href=" + locale_href + ", " : "");
+        }
+    }
+
+    public static class PresetLink extends TaggingPresetItem {
+
+        public String preset_name = "";
+
+        @Override
+        boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+            final String presetName = preset_name;
+            final TaggingPreset t = Utils.filter(TaggingPresetPreference.taggingPresets, new Predicate<TaggingPreset>() {
+                @Override
+                public boolean evaluate(TaggingPreset object) {
+                    return presetName.equals(object.name);
+                }
+            }).iterator().next();
+            if (t == null) return false;
+            JLabel lbl = PresetListPanel.createLabelForPreset(t);
+            lbl.addMouseListener(new PresetListPanel.PresetLabelML(lbl, t, null) {
+                @Override
+                public void mouseClicked(MouseEvent arg0) {
+                    t.actionPerformed(null);
+                }
+            });
+            p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
+            return false;
+        }
+
+        @Override
+        void addCommands(List<Tag> changedTags) {
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java	(revision 6571)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java	(revision 6572)
@@ -72,4 +72,5 @@
         parser.map("text", TaggingPresetItems.Text.class);
         parser.map("link", TaggingPresetItems.Link.class);
+        parser.map("preset_link", TaggingPresetItems.PresetLink.class);
         parser.mapOnStart("optional", TaggingPresetItems.Optional.class);
         parser.mapOnStart("roles", TaggingPresetItems.Roles.class);
