wiki:TaggingPresets

The example should be changed because it uses key-value pairs which are uncommon in OSM and highways are usually NOT oneway.

Languages:

Tagging Presets

JOSM supports distributed tagging presets. This is a XML config file that describes a GUI for entering tags (or properties, annotations, sometimes called map features). The XML files can be placed anywhere in the web or at the users local file system. Presets can be added by the users at a central page Presets.

Installing presets

Either:

Develop a new preset

The tagging preset description is in a very simple XML format. Details see below.

See the defaultpresets.xml for an example covering most of the possibilities listed below.

The full XSD schema is available at the namespace URI (http://josm.openstreetmap.de/tagging-preset-1.0) as well as the source repository.

To add the preset to the list of available presets see Presets#Createnewpresets.

Example:

<presets xmlns="http://josm.openstreetmap.de/tagging-preset-1.0">
  <item name="Highway">
    <label text="Inserting a highway in UK" />

    <text key="name" text="Highway (e.g. M3)" />
    <combo key="highway" text="Type" values="major,minor" />

    <!-- Highways are usually oneway -->
    <check key="oneway" text="Oneway" default="on" />

    <!-- Always setting class=highway -->
    <key key="class" value="highway" />
  </item>
</presets>

XML Format description

Tags

The document prolog

<presets>
Has to be the main tag of the file. Supports following attributes
  • xmlns="http://josm.openstreetmap.de/tagging-preset-1.0"
  • author - the name of the author of the preset
  • version - the version number of the file. For automatical version adjustment of presets managed in this wiki you can use two internal variables: [[revision]] (the latest version number of the wiki page) and [[date]] (the date of the last edit).
  • description (i18n) - description what the file contains
  • shortdescription (i18n) - very short overview description i.e. the "name" of the preset
  • link (i18n) - web link to further details (optional)
  • icon - informational icon for the whole preset. (This is nedded to display the icon in the table at Presets.)

(i18n) means the values may also be localized (e.g. de.description).


Comments

<!-- this is an example comment -->
The document can contain embedded comments.


<group>
Used to group items in sub menus. name is required, icon is optional attribute.
<item>
Every item is one annotation set to select from. name is required, type and preset_name_label are recommended, icon and name_template are optional attributes.
<separator/>
Insert a line separator into the menu.


Preset window layout

<label>
Labels are static texts for display. text is a required attribute, icon and icon_size are optional.
<space />
Add some space (ie a newline).
<optional>
Used to group some optional elements of an item. The text attribute is optional. If used without text then this is equivalent to <space /><label text="Optional Attributes:"/><space />
<item_separator />
Add a horizontal separator line between items.
<link>
Specify a web link for this feature or to anything else of use. The href attribute is required.
<checkgroup>
To group checks. The columns attribute is required.
<roles>
This is required around <role> and adds the heading ("Availible roles role count elements") to the table which is generated by several <role>.
<role>
To specify possible roles of members in relations. The key attribute is required, text, requisite, count, type and member_expression are optional.
<preset_link>
Adds a link to an other preset. The preset_name attribute is required.


Set a fixed key value pair

<key>
This tag will always set a key to a specific value. key is required and if value is present, the key will be set. If value attribute is ommited, the key is removed. The match attribute is optional.


Attribute entry and selection dialog boxes

<text>
A text edit field to enter any arbitrary string from the user. key is mandatory, text, default, use_last_as_default, auto_increment, length, alternative_autocomplete_keys and match is optional
<combo>
Displays a multiple choice combo box. key and values are mandatory, text, default, editable, delimiter, values_from, display_values, short_descriptions, use_last_as_default, values_searchable, length and match is optional.
If editable is true (default), combo boxes can be edited as if they were text fields (additional to the drop down menu). Non editable combo boxes can only contain one of the specified values.
<multiselect>
Displays a list from which zero or more items can be chosen. key and values are mandatory, and text, default, delimiter, values_from, rows, display_values, short_descriptions, use_last_as_default, values_searchable and match are optional. The selected values will be concatenated with the specified delimiter (default: semicolon) and written to the tag value. If a tag value has already been set when the preset dialog is opened, the multiselect will attempt to mark the appropriate items in the list as select. If the tag value cannot be represented by a combination of choices in the list, then the list will be disabled so that the user cannot accidentally overwrite a custom value. In contrast to the "combo" element, the "multiselect" expects the list of values, descriptions etc. to use the specified delimiter, i.e. by default you will have to use a semicolon. You can specify delimiter="," but then a comma will also be used in the tag value.
<list_entry>
Used in <combo> and <multiselect>. More information see short_descriptions. The attributes are value, display_value, short_description, icon and icon_size.
<check>
A checkbox which the user can only select or deselect (or set as unset). The key attribute is mandatory. text, default, match, value_on , value_off and disable_off are optional.


Templates

<chunk>
To define a template of elements for later (repeated) use. The id attribute is mandatory.
<reference>
To include an earlier defined template. The ref attribute is mandatory.


Attributes

The attributes of the tags have the following meaning:

name="a_name"
Specify a name for an item. This name will be used in the GUI to display the tagging preset.
name_context="context"
Translation context for name attribute to separate equals words with different meaning (not required for in-file translations).
type="data_type"
When specified, only objects of the given type will be changed at all by this tagging preset. Can be "node", "relation", "way", "closedway" or any comma separated combination of them. Also used in the <role> tag to specify which object types are allowed for a specific relation member.
icon="iconname"
A name or link to an icon. The image will be used as icon to display in the selection list and when adding the preset to the toolbar. Icons can also be used in <item>, <label> and <list_entry>. The icon should be quadratic in size. See Styles#Iconhandling how icons can be specified.
icon_size="a number"
The maximal size of an icon in px. If no value is given, default is 16 for <label> and the default icon size for <list_entry /> (in <combo> and <multiselect>).
key="some_key"
This specifies the property key that will be modified by the item. In case of <role> it is the role name used in a relation.
text="Any text"
The description, that will be displayed before (after in case of <check>) the gui element. Also used for <label> and <optional>.
text_context="context"
Translation context for text attribute to separate equals words with different meaning (not required for in-file translations).
default="default_value"
The default value for the item. If not specified, the current value of the key is chosen as default (if applicable). In case of <check> whether the checkbox is ticked on or off by default (default is "off"). In case of <text>, <combo> and <multiselct> defaults to "".
values="entry1,entry2,entry3"
A list of entries (for the <combo> box and <multiselect>). The list has to be separated by commas (for the combo box) or by the specified delimiter (for the multiselect). If a value contains the delimiter, the delimiter may be escaped with a backslash. If a value contains a backslash, it must also be escaped with a backslash.
values_from="JAVA code"
To use instead of "values" if the list of values has to be obtained with a Java method of this form: public static String[] getValues(); The value must be: "full.package.name.ClassName#methodName".
values_context="context"
Translation context for name attribute to separate equals words with different meaning (not required for in-file translations).
display_values="Entry1,Entry2,Entry3"
A list of entries that is displayed to the user. Must be the same number and order of entries as values and editable must be false or not specified. For the delimiter character and escaping, see the remarks at values. Used in <combo> and <multiselect>.
value="foobar"
Specify a value to be entered in the <key> tag.
value_on="foobar"
Specify the true value to be entered in the <key> tag of a checked <check> (default is "yes").
value_off="foobar"
Specify the false value to be entered in the <key> tag of a unchecked <check> (default is "no").
disable_off="true"
Whether the off value of a <check> is disabled in the dialog, i.e., only unset or yes are provided.
editable="false"
The combo box is readonly, which means that the user can only select an item in the list. Default is "true", which means, the user can add other values as text.
use_last_as_default="true|false|force"
For <combo>, <multiselect> or <text> fields the last value is used as default. Using "force" enforces this behaviour also for already tagged objects. Default is "false".
rows="count"
Specify the number of rows to display in <multiselect> entry (default -1).
name_template="template", name_template_filter="search expression"
Custom name formatter for osm primitives matching this preset. See NameTemplate for details.
match="none|key|key!|keyvalue|keyvalue!"
Allows to change the matching process, i.e., determining whether the tags of an OSM object fit into this preset. If a preset fits then it is linked in the Tags/Membership dialog.

  • none: neutral, i.e., do not consider this item for matching
  • key: positive if key matches, neutral otherwise
  • key!: positive if key matches, negative otherwise
  • keyvalue: positive if key and value matches, neutral otherwise
  • keyvalue!: positive if key and value matches, negative otherwise

Note that for a match, at least one positive and no negative is required. Default is "keyvalue!" for <key> and "none" for <text>, <combo>, <multiselect> and <check>.

id="unique_identifier"
the unique identifier for this chunk
ref="unique_identifier"
the unique identifier of the (already defined) template to include
columns="a number"
the number of columns of grouped checks
requisite="optional|required"
If a relation member is optional or required. Default is "optional".
count="a number"
How often can a role occur (if not given unlimited number is assumed)
member_expression="an expression"
an expression (cf. search dialog) for objects of this role
preset_name="exact_name"
The exact name of the preset to link to.
preset_name_label="false|true"
Whether to insert "[preset name]" label in dialog (defaults to "false" for backward-compatibility on external presets).
length="a number"
The length of a <text> or <combo> box (number of characters allowed).
alternative_autocomplete_keys="some_key(s)"
A comma separated list of alternative keys to use for autocompletion of <text>.
auto_increment="-2,-1,+1,+2"
May contain a comma separated list of integer increments or decrements, e.g. "-2,-1,+1,+2". A button will be shown next to the <text> field for each value, allowing the user to select auto-increment with the given stepping. Auto-increment only happens if the user selects it. There is also a button to deselect auto-increment. Default is no auto-increment. Mutually exclusive with use_last_as_default.
delimiter="special character"
The character that separates values. In case of <combo> the default is comma. In case of <multiselect> the default is semicolon and this will also be used to separate selected values in the tag. More information see <multiselect>.
short_descriptions=""Entry1,Entry2,Entry3"
A delimiter-separated list of texts to be displayed below each display_value. (Only if it is not possible to describe the entry in 2-3 words.) Instead of comma separated list instead using values, display_values and short_descriptions, the following form is also supported: <list_entry value="" display_value="" short_description="" icon="" icon_size="" />
values_searchable="true|false"
Whether to search in <combo> or <multiselect> (display_)values when searching for presets.

Deprecated Attributes

The following attributes are deprecated and no longer supported by JOSM:

delete_if_empty="true"
was removed in [5155]. You can simply remove this attribute if still used in your preset.
required="true"
repleaced by match since [5155]

Translation

To support translations, all textual elements ("name", "text", "display_values") may also be localized. (E.g. "de.name" would represent the name in case German language support is loaded.)

In JOSM internally (internal preset) all "name", "text" and "display_values" are translated when no specific translation has been given in XML file. When no "display_values" are supplied, then "values" will be treated as "display_values" and translated instead. When translations of equal words but different meanings may conflict, a translation context should be specified. Use "name_context", "text_context" or "values_context" for this. The context should be a meaningful short description to help translators. The translation for the internal preset is done at Launchpad (and will probably change to Transifex in the future).

Icon handling

See Styles.

See also

Last modified 4 weeks ago Last modified on Nov 24, 2014, 7:48:04 PM

Attachments (2)

Download all attachments as: .zip