Usually patching means to replace the setting-subsections with the ones provided:
<configuration> <telephony> <callWaiting> <active>true</active><!-- set /telephony/callWaiting/active to true --> <!--tone>true</tone--> <!-- dont touch /telephony/callWaiting/tone --> </callWaiting> <callForwarding> <unconditional> <active>false</active><!-- set /telephony/callForwarding/unconditional/active to false --> <!-- dont touch target or timeout --> </unconditional> <!-- dont touch other callForwarding-subs like busy or noResponse --> </callForwarding> <!-- dont touch any other telephony-settings --> </telephony> </configuration>
In the above example the values to be replaced were decided by the xpath, e.g.
/telephony/callWaiting/active. There are multiple settings that come in lists where each element has the same xpath, only a different index. E.g.
/keys/phoneXtensions/key. In these cases the merge-mechnism watches for a special attribute that is unique to such an element. These Elements replace their existing counterparts in entirety.
<keys version="1.8.8"> <phoneXtensions> <key icon="" keyNumber="1" info="" label=""> <!--replace the key with keyNumber 1 with whatever is provided here--> </key> <key icon="" keyNumber="2" info="" label=""> <!--replace the key with keyNumber 2 with whatever is provided here--> </key> <!--don touch any other phoneXtensions-keys--> </phoneXtensions> </keys>
This is the current list of these special marking attributes:
users/user@name keys/phoneXtensions/key@keyNumber keys/extensionModule1/key@keyNumber keys/extensionModule2/key@keyNumber keys/extensionModule3/key@keyNumber keys/homeScreen/key@keyNumber telephony/callBindings/callBinding@name templates/template@name devices/cameras/ipCamera@name luaLibraries/luaLibrary@name luaAutoStarters/luaScript@name
Identitiy-elements do not have a special marker-attribute
Identities get merged the standard way. E.g.: to just change the username of the third identity, provision this: