Actually you don't need to write a loop, because that's what the XSLT processor does by default. Just write a template rule to process Item elements:
<xsl:template match="Item">
<h2>Item <xsl:value-of select="@Id"/> (Name <xsl:value-of select="Name"/></h2>
<p><xsl:value-of select="ScopeNotes"/></p>
</xsl:template>
In practice you might want to add some wrapper stuff:
<xsl:template match="ControlledList">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
It's the apply-templates that does the "looping".
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference