An alternative XSLT solution to (Q16) that is less general, but potentially more efficient:

<critical_sequence xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:variable name="p" select="(//procedure)[1]"/>
  <xsl:for-each select="$p//incision[1]/following::*[not(ancestor-or-self::incision)
                                                     and count(preceding::incision) = 1]">
    <xsl:copy/>
  </xsl:for-each>
</critical_sequence>
<<<  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15    >>>