6.6 Undo Empty Scripts

<..special sub and super scripts..>
 <script element="msup" >
    <set name="m-sub-sup" >
      <.open xslt script.>
      <.undo if empty su.>
      <.close xslt script.>
    </set>
    <xslt name="." xml="." xsl="m-sub-sup" />
    <.superscript 2 and 3 into verbose.>
 </script>
 <script element="msub" >
   <.sub script.>
 </script>
 <script element="msubsup" >
   <.subsup prime.>
   <.sub sup script.>
   <.sub superscript 2 and 3 into verbose.>
 </script>
-_-_-

<..sub sup script..>
 <set name="m-sub-sup" >
   <.open xslt script.>
   <.undo if empty su.>
   <.close xslt script.>
 </set>
 <xslt name="." xml="." xsl="m-sub-sup" />
-_-_-

<..sub script..>
 <set name="m-sub-sup" >
   <.open xslt script.>
   <.undo if empty su.>
   <.msub of log.>
   <.close xslt script.>
 </set>
 <xslt name="." xml="." xsl="m-sub-sup" />
-_-_-

<..undo if empty su..>
 <xsl:template match="*[
     (self::msup or self::msub or self::msubsup)
   and
     not(
         child::mrow[ @class = ’mrow-sub’ ]
         / child::*[ not(@title = ’speech-extra’)
                     and
                     (normalize-space(.) != ’’)
                   ]
     )
   and
     not(
         child::mrow[ @class = ’mrow-super’ ]
         / child::*[ not(@title = ’speech-extra’)
                     and
                     (normalize-space(.) != ’’)
                   ]
     )
 ]" >
    <xsl:apply-templates select="child::mrow[
                           @class = ’mrow-base’ ]/*" />
 </xsl:template>
-_-_-
<msup>  
   <mrow class="mrow-base">  
     .........  
   </mrow>  
   <wrow class="mrow-super">  
     <span class="begin-script"> superscript </span>  
     <span class="end-script"> baseline </span>  
   </mrow>  
</msup>