another, more radical, possibility

Am trying to wrap up the new version of CSL and would like some
feedback.

Here’s another, even flatter, and more generic possibility:

   <metadata-type name="book">
     <formatting-def name="author" alternate="editor"/>
     <formatting-def name="year" prefix=" (" suffix=") "/>
     <formatting-def name="title" font-style="italic" suffix="."/>
     <formatting-def name="editor"/>
     <formatting-group prefix="(" suffix=")">
       <formatting-def name="publisher-place"/>
       <formatting-def name="publisher-name" prefix=":"/>
     </formatting-group>
    </metadata-type>
   <metadata-type name="chapter">
     <formatting-def name="author" alternate="editor"/>
     <formatting-def name="year" prefix=" (" suffix=") "/>
     <formatting-def name="title" font-style="italic" suffix="."/>
     <formatting-def name="container-title" prefix=" "/>
     <formatting-def name="container-editor"/>
     <formatting-group prefix="(" suffix=")">
       <formatting-def name="container-publisher-place"/>
       <formatting-def name="container-publisher-name" prefix=":"/>
     </formatting-group>
    </metadata-type>
   <metadata-type name="article">
     <formatting-def name="author" alternate="editor"/>
     <formatting-def name="year" prefix=" (" suffix=") "/>
     <formatting-def name="title" font-style="italic" suffix="."/>
     <formatting-def name="container-title" prefix=" "/>
     <formatting-group prefix="(" suffix=")">
       <formatting-def name="volume" prefix="v"/>
       <formatting-def name="issue" prefix="n"/>
       <formatting-def name="month_day" prefix=", "/>
     </formatting-group>
    </metadata-type>

The above is less elegant and easily controlled from a purely XML
standpoint, but it probably fits better non-XML programming
environments (indeed, the thinking is partly motivated by working on
the port to Ruby, where I have objects that “look” something like the
above), and would be easier to integrate into existing styling systems
(e.g. ODF). It’s also more flexible.

The idea would be to use conventions on the name attributes to signal
hierarchy. The hyphen would denote a relation. So, for example,
“container-title” does the same thing as the existing nested elements.
Likewise for the publisher-* names.

I add the formatting-group element to retain the ability to group
formatting where needed, but leave it totally flexible what would go in
those groups.

Any opinions? This would be a kind of radical change, and if I do it, I
might as well get it over with quickly and not look back. Not
surprisingly, I’m reluctant to do so without a few votes of confidence!
Maybe I’m being a little crazy!

Bruce