One thing you might consider is using C0x's and the level attribute.
We're working on style sheets that, during the generation of XHTML
pages, use the numeric value of the component level to calculate the
amount of indent applied (as an in-line style) to the <div> we use to
wrap a component. We use the value of the C0x's level attribute to
define the class of the generated component. A CSS style sheet can
then be used to apply a bottom border, which gives the same effect as
a horizontal rule, to particular level values. CSS2 selectors can
also be used to construct rules for particular situations.
For more tricky situations, the power and flexibility that XSLT/XPath
2.0 provide in developing conditional logic make it worth the trouble
of learning. XPath 2.0 in particular provides a number of useful
functions and constructs, most notably an "if-then-else" statement as
well as "some" and "every" quantifiers, that make generating <hr> tags
during a EAD to XHTML transformation relatively painless. The Saxon
processing engine (in both java and .NET versions) offers a very good
implementation of XSLT/XPath 2.0 and is available in a free, open
source version that is more than adequate for these purposes. It also
has a very good java-based GUI available in the open-source Kernow.
Thomas Pulhamus <[log in to unmask] <mailto:[log in to unmask]>>
Special Collections, Morris Library
University of Delaware