We do use a div in those cases, but it is buried inside of a separate html file that the main document pulls in through an iframe. The complications for doing it all in the main html source is that there can be name collisions related to Javascript variables as well as with slate div names.
My proposal for working around this is to encapsulate all of the Javascript inside of a function so that all names are constrained to a local namespace and can't conflict, and to introduce the idea of concatenating a parent's id/label with a child element suffix in order to generate unique ids. That way, even if you were to copy and paste the identical XML to get the same interactive element twice in a row, because the neighboring parent elements have separate ids, the dependent children elements have unique ids even though they have the same coded partial names.
- Brian