The two procedures which you can use to parse a template are template::adp_parse and template::adp_include
These both take a path to a file.
You might look at template::adp_include and create a complementary procedure that takes a string instead of a file path.
Thanks for the help. I finally found the solution elsewhere on the forum. Here's the post, by Dan Wickstrom: https://openacs.org/forums/message-view?message_id=53556
The key piece I needed was template::adp_compile, which can accept either a string or a filename: https://openacs.org/api-doc/proc-view?proc=template%3A%3Aadp_compile
Kind regards, Justis