6.2 Continuos Fractions
6.2.1 Get Three Bottom Levels
<xsl:when test=" check numeral numerator
(translate(
normalize-space(
child::span[ @class = ’mrow-numerator’ ]),
’0123456789’,’’)= ’’)
and <.check equality of numerators.>
and <.check ops before two top fracs.>
">
<.a,b := top 2 pre op values.>
<xsl:choose>
<xsl:when test="
( translate($a,’0123456789 ’,’’) = ’’)
and (normalize-space($a)=normalize-space($b))
and starts-with( $c, normalize-space( $a ))
and starts-with(
normalize-space(
substring-after( $c, normalize-space( $a )) )
,
normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
preceding-sibling::*[1] )
)
" >
<xsl:attribute name="class">
<xsl:value-of select=" ’continuous-mfrac’ " />
</xsl:attribute>
<xsl:apply-templates select="*|text()|comment()" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="*|@*|text()|comment()" />
</xsl:otherwise>
</xsl:choose>
</xsl:when> -_-_-
( normalize-space(
child::span[ @class = ’mrow-numerator’ ])
and
normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-numerator’ ])
)
and
( normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-numerator’ ])
and
normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-numerator’ ])
)
-_-_-
( child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
preceding-sibling::*[1][@class = ’mo-bin’]
)
and
( normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
preceding-sibling::*[1] )
=
normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
preceding-sibling::*[1] )
)
-_-_-
<xsl:variable name="a">
<xsl:apply-templates select="
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
preceding-sibling::*[2]
" mode="enum-op" />
</xsl:variable>
<xsl:variable name="b">
<xsl:apply-templates select="
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
preceding-sibling::*[2]
" mode="enum-op" />
</xsl:variable>
<xsl:variable name="c">
<xsl:value-of select="
normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-enumerator’ ] )
" />
</xsl:variable>
-_-_-
<xsl:template match="*" mode="enum-op">
<xsl:if test="preceding-sibling::*" >
<xsl:apply-templates select=" preceding-sibling::*[1] " />
</xsl:if>
<xsl:value-of select="." />
</xsl:template>
-_-_-
6.2.2 Prepend Existing one
<xsl:when test="
(@class = ’mfrac’)
and
child::span[ @class = ’mrow-enumerator’ ]
/ child::span[ @class = ’continuous-mfrac’ ]
and
( normalize-space(
child::span[ @class = ’mrow-numerator’ ]
)
=
normalize-space(
child::span[ @class = ’mrow-enumerator’ ]
/ child::span[ @class = ’continuous-mfrac’ ]
/ child::span[ @class = ’mrow-numerator’ ]
)
)
and <.check equality of op with cont frac.>
" >
<.a,b := cont top 2 pre op values.>
<xsl:choose>
<xsl:when test="
normalize-space($a)=normalize-space($b)
" >
<xsl:attribute name="class">
<xsl:value-of select=" ’continuous-mfrac’ " />
</xsl:attribute>
<xsl:apply-templates select="*|text()|comment()" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="*|@*|text()|comment()" />
</xsl:otherwise>
</xsl:choose>
</xsl:when> -_-_-
(
normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
preceding-sibling::*[1] )
=
normalize-space(
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mfrac’ ] /
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’continuous-mfrac’ ] /
preceding-sibling::*[1] )
)
-_-_-
<xsl:variable name="a">
<xsl:apply-templates select="
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mcontinuous-mfrac’ ] /
preceding-sibling::*[2]
" mode="enum-op" />
</xsl:variable>
<xsl:variable name="b">
<xsl:apply-templates select="
child::span[ @class = ’mrow-enumerator’ ] /
child::span[ @class = ’mcontinuous-mfrac’ ] /
child::span[ @class = ’mrow-enumerator’ ] /
child::span[
(@class = ’mfrac’) or (@class = ’mcontinuous-mfrac’)
] /
preceding-sibling::*[2]
" mode="enum-op" />
</xsl:variable>
-_-_-