XSLT create list from paragraphs
With XSLT 1.0, sibling recursion is the way to go, and you're on the right lines. Not tested, but something like this:
<xsl:template match="p[@class='NL1']" mode="normal">
<ol>
<xsl:call-template name="makeLi"/>
<xsl:apply-templates select="following-sibling::p[1]" mode="list"/>
</ol>
</xsl:template>
<xsl:template match="p[@class='NL']" mode="list">
<xsl:call-template name="makeLi"/>
<xsl:apply-templates select="following-sibling::p[1]" mode="list"/>
</xsl:template>
<xsl:template match="p[@class='NLL']" mode="list">
<xsl:call-template name="makeLi"/>
</xsl:template>
<xsl:template match="p[@class='NL' or @class='NLL']" mode="normal"/>
I added mode="normal"
for the default processing mode just for emphasis, you should leave it out if using the default (unnamed) mode.