A sitemap is not supposed to be dynamic. It is meant to to be a static list of all the pages on your website. If the number of pages or the order of the pages changes you will need to make a new sitemap.
Often, yes - but if you're in CMS world then the number / order of pages can change regularly, so there is a need to automatically generate it.
Realistically though if you're going down this route it's best to use an established CMS such as Drupal which will have a plugin for generating such a sitemap on a regular basis as part of a crontab. You could write a program to do it yourself of course (look at the relevant directories and spit out the appropriate XML) but you're reinventing the wheel just a tad there!