【发布时间】:2012-02-20 16:56:28
【问题描述】:
我正在尝试使用 xslt 从 xml 文件中提取一些信息。我已经使用 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
【问题讨论】: