This problem is known as "positional grouping", you will find much discussion if you google for that.
In XSLT 2.0 it's easy,
<xsl:for-each-group select="*" group-starting-with="CtrlUnit">
<CtrlUnit>
<xsl:value-of select=".">
<xsl:for-each select="Freq">
<x:br/>
<xsl:value-of select="."/>
</
</
</
In 1.0 it's much harder. There are basically two techniques: "sibling recursion" in which you write a recursive template that runs through the sequence of siblings one element at a time, or "Muenchian grouping", in which you reduce the problem to value-based grouping using the Muenchian method, taking generate-id(preceding-sibling::CtrlUnit[1]) as the value of the grouping key.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference