ThomasM: Rechnen mit Vorgänger - Nachfolger

Beitrag lesen

Hallo whine,

und ich versuche mittels XSLT die 179 von der 194 zu subtrahieren, die 194 von der 211 usw.

Meine zaghaften Versuche in XSLT:

<xsl:for-each select="M">
 <xsl:variable name="vorg" select="number(preceding-sibling::GRT_G)"/>
 <xsl:variable name="grt_g" select="number(GRT_G)"/>
 <xsl:variable name="dif_grt" select="$grt_g - $vorg"/>
 <xsl:value-of select="dif_grt"/>
</xsl:for-each>

Trotz number bekome ich in der Ausgabe NaN. Weiß jemand Rat?

<xsl:for-each select="M">
  <xsl:variable name="vorg" select="number(preceding-sibling::M[1]/GRT_G)"/>
  <xsl:variable name="grt_g" select="number(GRT_G)"/>
  <xsl:variable name="dif_grt" select="$grt_g - $vorg"/>
  <xsl:value-of select="$dif_grt"/>
</xsl:for-each>

Die Achse bezieht sich auf den M-Vorgänger und zwar den jeweils ersten, also M[1] und darunter liegt das gesuchte GRT_G. Bei der Ausgabe via xsl:value-of fehlte noch das $-Zeichen.

Bei der ersten Abfrage kommt dennoch NaN, da kein Vorgänger vorhanden ist, alternativ $vorg z. B. so aufbauen:

<xsl:variable name="vorg">
  <xsl:choose>
    <xsl:when test="preceding-sibling::M[1]/GRT_G">
      <xsl:value-of select="number(preceding-sibling::M[1]/GRT_G)"/>
    </xsl:when>
    <xsl:otherwise>0</xsl:otherwise>
  </xsl:choose>
</xsl:variable>

Grüße, Thomas