That's how content control data binding usually works.
You can bind rich text in 2 ways:
The first way is binding/import of escaped XHTML content
; this import is triggered when the content control tag contains od:ContentType=application/xhtml+xml
When that's encountered, docx4j will take the bound XML value (which contains escaped XHTML) and use its ImportXHTML functionality to automatically convert it to standard WordML content.
Escaped XHTML looks something like:
(since this is going inside a paragraph, it is wrapped in a span; if it was paragraph level, it'd be wrapped in a div)
See further https://github.com/plutext/docx4j/blob/ ... XHTML.docx
The second way is binding/import of escaped Flat OPC
ie bind rich text content (tag contains 'od:progid=Word.Document'), though I think this is probably less popular; see further https://github.com/plutext/docx4j/blob/ ... ssing.docx
If your content is just an image, please see https://github.com/plutext/docx4j/blob/ ... mages.docx