Я пытаюсь извлечь некоторую информацию из файла XML с помощью xslt. Я использовал математические функции xslt для вывода различий между временем начала и окончания некоторых действий, над которыми я итерирую. Тем не менее, я не уверен, как я могу расширить это, чтобы вычислить разницу между временем начала следующего действия и временем окончания предыдущего. Насколько я знал, вы не можете переназначить переменную в xslt. На обычном языке я просто храню последний раз, когда встречается, как переменную. Если бы кто-нибудь, кто мог бы дать мне несколько советов о том, как сделать это более идиоматическим способом xslt, я был бы очень благодарен.
Вот упрощенная версия моего файла данных.
<Actions>
<Action>
<Start>1</Start>
<End>10</End>
</Action>
<Action>
<Start>13</Start>
<End>16</End>
</Action>
<Action>
<Start>20</Start>
<End>24</End>
</Action>
</Actions>
Это моё текущее xslt-преобразование, которое внутренне влияет на действия.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="text" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:for-each select="Actions/Action">
<xsl:value-of select="End - Start" /><xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Результат, который я хотел бы видеть:
9
3
3
4
4