Most of the elements in my schema are inserted with placeholders, e.g.
<x:node match="para">
<x:role>paragraph</x:role>
<x:placeholder>New {name}</x:placeholder>
</x:node>
When the user inserts a para, they see a red New para highlighted and typing in the paragraph will replace this. It's nice.
I have some elements which require a couple of attributes to be supplied; they're fixed in the schema but the Xopus editor does not force them when a user creates a new element. I can get around this by using a template, e.g.
<x:node match="code">
<x:templates>
<x:template formatted="Y" xml:space="preserve">
</x:template>
</x:templates>
</x:node>
Ideally I would include a placeholder in the template and have the user see New code when they inserted this element. Unfortunately the content of a placeholder is inserted as ordinary text, so it isn't replaced when the user starts typing in the element.
With no placeholder the element has a tendency to disappear completely, and the user has to be very careful positioning the cursor.