如何使用xslt
将最后一个日期显示在顶部<records>
<LATEST_TITLE>
<LATEST_DATE>2013-12-10</LATEST_DATE>
<TITLE>abc</TITLE>
</LATEST_TITLE>
<LATEST_TITLE>
<LATEST_DATE>2013-12-13</LATEST_DATE>
<TITLE>def</TITLE>
</LATEST_TITLE>
<LATEST_TITLE>
<LATEST_DATE>2013-12-17</LATEST_DATE>
<TITLE>ghi</TITLE>
</LATEST_TITLE>
</records>
预期产出
2013-12-17
abc
def
ghi
我们可以两次使用模板吗
答案 0 :(得分:0)
如果您真的想要两个匹配相同元素的模板,可以使用模式属性
<xsl:template match="LATEST_TITLE" mode="date">
<!-- Code here to output the date -->
</xsl:template>
<xsl:template match="LATEST_TITLE" mode="title">
<!-- Code here to output the title -->
</xsl:template>
要调用它们,您可以在执行apply-templates
时指定所需的模式 <xsl:apply-templates select="LATEST_TITLE" mode="date" />
<xsl:apply-templates select="LATEST_TITLE" mode="title" />
您真正需要做的唯一额外工作是将xsl:sort添加到第一个apply-templates,按日期排序,然后将匹配模板更改为仅输出第一个位置的元素。
试试这个XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/*">
<xsl:apply-templates select="LATEST_TITLE" mode="date">
<xsl:sort select="LATEST_DATE" order="descending" />
</xsl:apply-templates>
<xsl:apply-templates select="LATEST_TITLE" mode="title" />
</xsl:template>
<xsl:template match="LATEST_TITLE" mode="date">
<xsl:if test="position() = 1">
<xsl:value-of select="LATEST_DATE" />
<xsl:value-of select="' '" />
</xsl:if>
</xsl:template>
<xsl:template match="LATEST_TITLE" mode="title">
<xsl:value-of select="TITLE" />
<xsl:value-of select="' '" />
</xsl:template>
</xsl:stylesheet>