Unfortunately, the built-in MS Word functionality does not support this, but there is a solution to this problem with Docentric. It requires a bit of exercise and an in-depth understanding of the Xpath - but I’ll try to describe this on an example.
You will see three tagging elements in my example - the outer list element, a var element and a field element (1 ).
The list tagging element uses the string-split function to convert the value of the @DocumentTitle field into one or multiple instances, depending on the number of spaces it finds in it:
string-split(@DocumentTitle, true(), ' ')
Inside the list we find a var tagging element (2 ) which I named as title . As you will see in the attached template this element is bound to CurrentDataContext and thus stores (one or multiple) values of instances - I. e. groups of characters from the @DocumentTitle field separated by spaces.
The third element is the field that uses the following expression:
concat(upper-case(replace(var-element-value('title'), sub-string(var-element-value('title'), 2), '')), lower-case(sub-string(var-element-value('title'), 2)))
Let’s now analyze this expression bit by bit. Going from the back of it, the var element value is read (with the var-element-value function) from the memory. Next, by using the sub-string function, the first letter of this value is cut off and converted to lower-case, e. g. Invoice > nvoice or Title capitalized TEST > itle apitalized est
Then we have to isolate and capitalize the first letter(s) of each value (word) of the current instance. We can do that easily with the replace function:
upper-case(replace(var-element-value('title') , sub-string(var-element-value('title'), 2), ''))
From the whole word, Docentric performs a replace of the value it finds starting at character number 2 of the same word. This part is then replaced with an empty string (removed) and capitalized with the upper-case function, e. g. capitalized - apitalized = C
Finally, both parts - the first character and the rest of the string - are joined back via the concat function.
You can find my test template attached. It’s a nice exercise to try and insert the elements and bindings into your template yourself, but if you find that time-consuming, you can just click the tag on the list element (3 ), copy all the elements and bindings, and paste them into the template you are working on.
I hope you find our solution helpful - please let me know what you think.