There were 3 mistakes in the example app, but one of them is my fault, and another is a lack of docs, so I'll post the results here;
a) First Rene's mistake so I don't feel too bad;
You coded a routine (getMaandNaam) inside the Processed Code embed. this prevented the normal procedure end to take place (p_web._DivFooter etc.) Move this routine to the Procedure Routines embed with the other routines.
b) As you are aware the code inside the source must generate xHTML - ie it must be XML compliant HTML. And it was (almost). The one mistake you did make was to use which is good in HTML but not allowed in XML. In the procedure I've created a string for you (ie the template does this) called NBSP. This contains   which is html and xhtml compliant.
c) lastly, my error. Since you are embedding the source on the form, as a form field, it becomes a child of that form. So when you call it from the form you need to set the Parent value. Specifically;
p_web.SetValue('_ParentProc','exampleform')
kalender3(p_web)
p_web.SetValue('_ParentProc','')
the last line probably isn't necessary for your app, but might be a good habit to get into so that code after the call is unaffected by the call.
Note that this is one of the rare cases where we're using SetValue rather than SetSessionValue. This is because we're passing a "parameter" to the NetWebSource rather than setting a setting for the NetWebSource to use. You're correctly setting, and using, QDL:StartDatum as a SessionValue not a Value.
Cheers
Bruce