This provokes a similar but broader question: are there analogous basic
principles for program design which can be used to guide construction of
a transformation in XSLT?
The schema or a skeleton of the input xml structures tell you all the types of node you have to handle and the built in rules do (by default) an apply-template for each one.