Using the available D7 APIs and modules, how might one implement occurrence and relationship rules between fields, a 'la XML? I'm looking at migrating some Bricolage projects to Drupal, where the content is modeled after a subset of, and outputs to DocBook XML format.

Bricolage's field framework allows you to establish parent-child relationships between fields (making containers in Bricolage-speak), and define/enforce occurrence counts (0 or more, 1 or more, at least three, etc.). It's not directly analogous to XML schema, but it's worked well enough to allow users to create content that maps directly to a subset of DocBook, so that it can be fed into other systems.

My googling and skimming of the field API docs haven't yielded any clear answers, but I might not be thinking about it in a sufficiently Drupal-ish way.