Version 181 (modified by 4 years ago) ( diff ) | ,
---|
Languages:
Table of Contents
If you want to learn installation steps for presets, see Tagging Presets register in Preferences
If you want to use presets or need complete reference of presets see Presets
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 presets can be placed anywhere in the web or at the users local file system. JOSM can be configured to use custom local or remote Presets.
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.
Example:
<?xml version="1.0" encoding="UTF-8"?> <presets xmlns="http://josm.openstreetmap.de/tagging-preset-1.0"> <item name="Oneway highway" type="way"> <label text="Inserting a unidirectional highway" /> <combo key="highway" text="Type" values="trunk,motorway" /> <text key="name" text="Name (e.g. Angel Road)" /> <text key="ref" text="Ref (e.g. A406)" /> <!-- This is a oneway preset, so make oneway default --> <check key="oneway" text="Oneway" default="on" /> <!-- Always setting asphalt surface --> <key key="surface" value="asphalt" /> </item> </presets>
TaggingPresets-preset.xml, TaggingPresets.zip
XML Format description
The full XSD schema is available at the namespace URI (https://josm.openstreetmap.de/tagging-preset-1.0) as well as the source repository.
Tags
The document prologue
- <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 automatic version adjustment of presets managed in this wiki you have to use two internal variables:
[[revision]]
(the latest version number of the wiki page) and[[date]]
(the date of the last edit), e.g.version="1.[[revision]]_[[date]]"
. - 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 - icon for the whole preset
- baselanguage - when the base language is not English, specify it here (using non English preset texts will prevent automatic translation, once it is implemented (#11392))
(i18n) means the values may also be localized (e.g.
de.description
).
Comments
- <!-- this is an example comment -->
- The document can contain embedded comments.
Preset group creation
- <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
andpreset_name_label
are recommended,icon
andname_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
andicon_size
are optional. - <space />
- Add some space (i.e. a newline).
- <optional>
-
Used to group some optional elements of an item. The
text
attribute is optional. If used withouttext
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. Either the
wiki
(referring to an OSM wiki page, e.g."Tag:leisure=park"
) or thehref
(full URL) attribute is required. When thewiki
attribute is used the link points to the wiki page of the language JOSM is set to. If it doesn't exist the English page is shown. - <checkgroup>
-
To group checks. The
columns
attribute is required. - <roles>
-
This is required around
<role />
and adds the heading ("Available 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
andmember_expression
are optional. - <preset_link />
-
Adds a link to an other preset with a label on top. The
preset_name
attribute is required,text
to override the label (default is"Edit also …"
) andtext_context
are optional. A sequence of<preset_link />
withouttext
or a identicaltext
value are grouped below one label.
Watch out for presets with identicalname
as it is not predictable to which preset the link will lead to, see #12716.
Having the same tag in both presets does not work, see #18992.
Using<preset_link />
in presets opened from relation editor produces unexpected changes, see #19392.
Set a fixed key value pair
- <key />
-
This tag will always set a key to a specific value.
key
is required and ifvalue
is present, the key will be set. Ifvalue
attribute is omitted, the key is removed. Thematch
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
,match
,icon
andicon_size
(both since r17605) are optional. - <combo />
-
Displays a multiple choice combo box.
key
andvalues
are mandatory,text
,default
,editable
,delimiter
,values_from
,display_values
,short_descriptions
,use_last_as_default
,values_searchable
,length
,values_no_i18n
,values_sort
,match
,icon
andicon_size
(both since r17605) are optional.
Ifeditable
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.
If the key iscolour
orcolour:*
or*:colour
, a color preview and color picker is added on the right (see #8352). - <multiselect />
-
Displays a list from which zero or more items can be chosen.
key
andvalues
are mandatory, andtext
,default
,delimiter
,values_from
,rows
,display_values
,short_descriptions
,use_last_as_default
,values_searchable
,values_no_i18n
,values_sort
,match
,icon
andicon_size
(both since r17605) 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 specifydelimiter=","
but then a comma will also be used in the tag value. - <list_entry />
-
Used in
<combo>
and<multiselect>
. More information seeshort_descriptions
below. The attributes arevalue
,display_value
,short_description
,icon
andicon_size
. - <check />
-
A checkbox which the user can select, deselect or set as unset. The
key
attribute is mandatory.text
,default
,match
,value_on
,value_off
,disable_off
,icon
andicon_size
(both since r15437) 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 work with this tagging preset. Can be
"node"
,"way"
,"closedway"
,"multipolygon"
,"relation"
or any comma separated combination of them. Note that"multipolygon"
is not included in"relation"
, so if the preset should apply for multipolygons and other relation types, you need to specify both:"multipolygon,relation"
. 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 />
, plus all attribute entry and selection dialog boxes (since r17605, before it was only<list_entry />
and<check />
). It is placed in front of<text />
The icon should be quadratic in size. See Icon handling 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 the gui element, (in case of
<check />
after the gui element and the optional icon). 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"
-
An explicitly declared default value for the item. This value is only applied through a preset when the object the preset is applied to has zero keys.
If no value for default is specified, no value is set to the key. Used in
<check />
,<text />
,<combo />
and<multiselect />
. For<check />
only the values"on"
and"off"
are valid. - 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_no_i18n="true|false"
-
Disables internationalisation for values to avoid mistakes, see #11696. Default is
"false"
. Used in<combo />
and<multiselect />
. (Useful e.g. for keysopening hours
orbrand
.) Not needed with keys with only numbers as values likelayer
orlevel
which are already excluded from translation. - values_sort="true|false"
-
Values of
<combo />
and<multiselect />
are sorted alphabetic in every language. With this attribute you can disable the alphabetic sorting if the values should keep the given order, see #5509 and #11926. (In the JOSM internal preset this is used e.g. for the keystracktype
,direction
,network
,smoothness
,visibility
ortrail_visibility
.) Default is"true"
.
Users can globally disable sorting with the preference keytaggingpreset.sortvalues
. - values_context="context"
- Translation context for values 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
andeditable
must be"false"
or not specified. For the delimiter character and escaping, see the remarks atvalues
. 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 read only, 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. Feature is broken see #6157. - use_last_as_default="true|false|force"
-
For
<combo />
,<multiselect />
or<text />
fields the last used value is used as default. Using"force"
enforces this behavior also for already tagged objects. Default is"false"
. - rows="count"
-
Specify the number of rows to display in
<multiselect />
entry (if not set, it is auto determined by java or the look and feel and results in e.g. 8). Currently, you need to add one additional row to display all values, see #19013. - name_template="template", name_template_filter="search expression"
- Custom name formatter for osm primitives matching this preset. See below #name_templatedetails 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 matchingkey
: positive if key matches, neutral otherwisekey!
: positive if key matches, negative otherwisekeyvalue
: positive if key and value matches, neutral otherwisekeyvalue!
: positive if key and value matches, negative otherwise
"keyvalue!"
for<key>
and"none"
for<text />
,<combo />
,<multiselect />
and<check />
. - match_expression=""
-
Additional criteria for matching primitives. Specified in JOSM search syntax. (since r17662)
For instance, a preset withmatch_expression="foo=bar"
requires OSM objects to have the tagfoo=bar
. You may want to use thematch_expression=""
to exclude certain OSM objects, e.g. when a more specific preset is present. - 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
<check />
- 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
- regexp="true"
-
set to
"true"
if the key of a role is a regular expression. This allows variable roles e.g.<role key="level_-?\d+" text="Building level" regexp="true" requisite="optional" type="relation" />
allows the roleslevel_0
,level_1
,... - 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 auto completion 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 withuse_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 />
above. - 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 a comma separated list usingvalues
,display_values
andshort_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. - value_template="..."
-
A template to generate the value automatically based on other
<text />
values of this preset. For instance, "Bus {ref}: {from} → {to}" can be used to generate the name of a bus route relation.
name_template details
Name templates can be used to define custom formatting for OSM primitives or GPX waypoints (for example in the Relations or the Selection).
<?xml version="1.0" encoding="UTF-8"?> <presets> <item name="Public transportation" type="relation" name_template="Bus({operator} {ref} ?{'{from} - {via} - {to}' | '{from} - {to}' | '{from}' | '{to}'})" name_template_filter="type=route route=bus"> </item> </presets>
Samples
Template | Tags | Result |
---|---|---|
House number {addr:housenumber} | addr:housenumber=10 | House number 10 |
?{ 'House number {addr:housenumber} at {addr:street}' | 'House number {addr:housenumber}' } | addr:housenumber=10 | House number 10 |
addr:housenumber=10 addr:street=Abbey road | House number 10 at Abbey road | |
?{ admin_level = 2 'NUTS 1' | admin_level = 4 'NUTS 2' | admin_level = 6 'NUTS 3' | 'Admin level {admin_level}'} | admin_level=4 | NUTS 2 |
admin_level=5 | Admin level 5 | |
{admin_level} - {name} !{parent() type=boundary '?{'(part of {admin_level} - {name})' | ''}'} | admin_level=6 name=Vysocina , member of relation admin_level=4 name=Jihovychod | 6 - Vysocina (part of Jihovychod) |
admin_level=2 name=Czech republic (no parents) | 2 - Czech republic |
Syntax
{var}
- use value of variable var?{condition1 'value1' | condition2 'value2 | 'value3'}
- use value1 if condition1 is satisfied, value3 is no condition is satisfied. Condition can be either explicit - the same expression as in search or filters is used - or implicit; the value is used when all variables used inside exist!{search_expression 'template'}
- search_expression is evaluated and first matching primitive is used as context for template. Useful for example to get tags of parent relation.
Available values
For formatting of OSM primitives , the value of any tag can be used. You can use {special:everything}
to see what values are available for your gpx waypoints.
Some additional variables are available via the special prefix:
{special:everything}
prints all available values, available for formatting of both primitives and waypoints.{special:id}
prints the ID of an osm primitive{special:localName}
prints the localized name, that is the value ofname:lang
for your language if it is available or the value of the name tag if it doesn't.
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"
-
replaced 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 the German language support is loaded. In the preset code the English term must be the first before possible translations are added.
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 another service in the future, since the Launchpad web interface often produces timeout errors, see #8645).
The translation of external presets on this website is, so far, only possible inline within the preset source code, see #11392.
Icon handling
See Styles.
See also
Attachments (3)
- tagging_screenshot.png (6.9 KB ) - added by 17 years ago.
- TaggingPresets.png (51.8 KB ) - added by 13 years ago.
- Change 1 object.png (31.2 KB ) - added by 9 years ago.
Download all attachments as: .zip