1 /我有一个日期在xml中的事件列表。 我想以CSV格式打印每个事件及其日期。如果日期是01/01/1900,则搜索上一个不同的01/01/1900的兄弟姐妹
例如:
<Events>
<Event>
<Date>17/01/2012</Date>
<Description>Event 1</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 2</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 3</Description>
</Event>
<Event>
<Date>20/02/2012</Date>
<Description>Event 4</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 5</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 6</Description>
</Event>
</Events>
结果:
17/01/2012;Event 1
17/01/2012;Event 2
17/01/2012;Event 3
20/02/2012;Event 4
20/02/2012;Event 5
20/02/2012;Event 6
2 /我有一个日期在xml中的事件列表。 我想以CSV格式打印每个事件及其日期。如果日期是01/01/1900,则搜索不同的01/01/1900
的第一个下一个兄弟例如:
<Events>
<Event>
<Date>17/01/2012</Date>
<Description>Event 1</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 2</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 3</Description>
</Event>
<Event>
<Date>20/02/2012</Date>
<Description>Event 4</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 5</Description>
</Event>
<Event>
<Date>01/01/1900</Date>
<Description>Event 6</Description>
</Event>
<Event>
<Date>30/03/2012</Date>
<Description>Event 7</Description>
</Event>
</Events>
结果:
17/01/2012;Event 1
20/02/2012;Event 2
20/02/2012;Event 3
20/02/2012;Event 4
30/03/2012;Event 5
30/03/2012;Event 6
30/03/2012;Event 7
我找不到查找等于某个值的下一个或上一个项目的方法。 谢谢你的帮助。
答案 0 :(得分:0)
对于第一种情况,请尝试:
<xsl:template match="/Events">
<xsl:for-each select="Event">
<xsl:choose>
<xsl:when test="Date='01/01/1900'">
<xsl:value-of select="preceding-sibling::Event[Date!='01/01/1900'][1]/Date" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="Date" />
</xsl:otherwise>
</xsl:choose>
<xsl:text>;</xsl:text>
<xsl:value-of select="Description" />
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
请注意preceding-sibling
是reverse axis:最近的兄弟姐妹是第一个,而不是最后一个。