<?xml version='1.0' encoding=“UTF-8”?> <xsl:stylesheet xmlns:xsl=“www.w3.org/1999/XSL/Transform

xmlns:m="http://www.w3.org/1998/Math/MathML"
version='1.0'>
<xsl:template match="m:munderover">
  <xsl:call-template name="munderover">
    <xsl:with-param name="base">
      <xsl:call-template name="startspace">
        <xsl:with-param name="symbol" select="./*[1]"/>
      </xsl:call-template>
    </xsl:with-param>
    <xsl:with-param name="under">
      <xsl:call-template name="startspace">
        <xsl:with-param name="symbol" select="./*[2]"/>
      </xsl:call-template>
    </xsl:with-param>
    <xsl:with-param name="over">
      <xsl:call-template name="startspace">
        <xsl:with-param name="symbol" select="./*[3]"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>
<xsl:template name="munderover">
  <xsl:param name="base"/>
  <xsl:param name="under"/>
  <xsl:param name="over"/>
  <xsl:choose>
    <xsl:when test="$over='&#x000AF;'">  <!-- OverBar - over bar -->
      <xsl:text>\overline{</xsl:text>
      <xsl:call-template name="munder">
        <xsl:with-param name="base" select="$base"/>
        <xsl:with-param name="under" select="$under"/>
      </xsl:call-template>
      <xsl:text>}</xsl:text>
    </xsl:when>
    <xsl:when test="$over='&#x0FE37;'">  <!-- OverBrace - over brace -->
      <xsl:text>\overbrace{</xsl:text>
      <xsl:call-template name="munder">
        <xsl:with-param name="base" select="$base"/>
        <xsl:with-param name="under" select="$under"/>
      </xsl:call-template>
      <xsl:text>}</xsl:text>
    </xsl:when>
    <xsl:when test="$under='&#x00332;'">  <!-- UnderBar - combining low line -->
      <xsl:text>\underline{</xsl:text>
      <xsl:call-template name="mover">
        <xsl:with-param name="base" select="$base"/>
        <xsl:with-param name="over" select="$over"/>
        <xsl:with-param name="pos_over" select="3"/>
      </xsl:call-template>
      <xsl:text>}</xsl:text>
    </xsl:when>
    <xsl:when test="$under='&#x0FE38;'">  <!-- UnderBrace - under brace -->
      <xsl:text>\underbrace{</xsl:text>
      <xsl:call-template name="mover">
        <xsl:with-param name="base" select="$base"/>
        <xsl:with-param name="over" select="$over"/>
        <xsl:with-param name="pos_over" select="3"/>
      </xsl:call-template>
      <xsl:text>}</xsl:text>
    </xsl:when>
    <xsl:when test="translate($base,'&#x0220F;&#x02210;&#x022c2;&#x022c3;&#x02294;',
            '&#x02211;&#x02211;&#x02211;&#x02211;&#x02211;')='&#x02211;'">
    <!-- if $base is operator, such as
      &#x02211;  /sum L: summation operator
      &#x0220F;  /prod L: product operator
      &#x02210;  /coprod L: coproduct operator
      &#x022c2;  /bigcap
      &#x022c3;  /bigcup
      &#x02294;  /bigsqcup
    -->
      <xsl:apply-templates select="./*[1]"/>
      <xsl:text>_{</xsl:text>
      <xsl:apply-templates select="./*[2]"/>
      <xsl:text>}^{</xsl:text>
      <xsl:apply-templates select="./*[3]"/>
      <xsl:text>}</xsl:text>
    </xsl:when>
    <xsl:otherwise>
      <xsl:text>\underset{</xsl:text>
      <xsl:apply-templates select="./*[2]"/>
      <xsl:text>}{\overset{</xsl:text>
      <xsl:apply-templates select="./*[3]"/>
      <xsl:text>}{</xsl:text>
      <xsl:apply-templates select="./*[1]"/>
      <xsl:text>}}</xsl:text>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

</xsl:stylesheet>