That should work. Alternatively, you could define "put" data into page scope and then update your page layout XSL to retrieve and display them. I would use what you have at the moment -- just personal preference.
Our alternative is to create a "meta-data" component with Appearance XSL that generates code such as:< customMetaTags >< meta name="robots" > ... < /meta >< /customMetaTags >Then use the page layout XSL to retrieve and render that element in the < head > section. Right?
... follow the code example above within your component or a precontroller ...
Yes Generate HTML will execute your externals and since it's a run once Paradigm, That is that head data doesn't change different request of the same page it should work OK.