为什么减法和除法在 XSLT 中给我 NaN?

Why are subtractions and divisions giving me NaN in XSLT?

所以,我正在尝试制作一个符号导数计算器,并且它可以正常工作。它给了我 NaN XML

<?xml version="1.0"?>
<sum>
    <mono>  
        <arg>3</arg>
        <var>x</var>
        <exp>2</exp>
    </mono>
</sum>

这个样式表为数字提供了它们在导数中应有的行为。

<xsl:stylesheet version="1.0"        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match = "/">
    <mono>
        <arg>
            <xsl:value-of select="arg div exp"></xsl:value-of>
        </arg>
    <var>
        <xsl:if test="exp > 0"/>
        X
    </var>
    <exp>
        <xsl:value-of select="exp - 1"></xsl:value-of>
    </exp>
</mono>
</xsl:template>
</xsl:stylesheet>

您的主模板匹配根元素:

<xsl:template match = "/">

改为匹配 mono 个元素:

<xsl:template match = "mono">

那么你的 NaN 问题就会消失,因为 argexp 元素现在确实是当前 mono 元素的子元素,而它们不是 [= 的子元素18=] 之前的元素。

这是您的 XSLT,并进行了上述一些其他改进:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="mono">
    <mono>
      <arg>
        <xsl:value-of select="arg div exp"></xsl:value-of>
      </arg>
      <var>
        <xsl:if test="exp > 0">X</xsl:if>
      </var>
      <exp>
        <xsl:value-of select="exp - 1"/>
      </exp>
    </mono>
  </xsl:template>
</xsl:stylesheet>

这里是 XML 输出,没有 NaN,按照要求:

<?xml version="1.0" encoding="UTF-8"?>
<mono>
   <arg>1.5</arg>
   <var>X</var>
   <exp>1</exp>
</mono>