I have a list of news items, sorted by dateCreated. I have a preview box control where I only want to show the first item. How can I do that using XSLT?
//newsItem[1]
Selects the first book newsItem
element, but note that IE5 and later has implemented that [0]
should be the first node, but according to the W3C standard it should be [1]
!
//newsItem[1]
should do
I had the same question and I think I found a better answer:
<xsl:for-each select="newsItem[1]">
<div><xsl:value-of select="dateCreated"/></div>
<div><xsl:value-of select="summary"/></div>
</xsl:for-each>
If you wish to output XHTML 1.1, here's one way:
<?xml version="1.0"?>
<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xsl xs">
<xsl:output mode="xhtml" version="1.1" omit-xml-declaration="yes"
encoding="utf-8" media-type="application/xhtml+xml" indent="no"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" />
<xsl:template match="//newsItem[1]">
<div><xsl:value-of select="dateCreated"/></div>
<div><xsl:value-of select="summary"/></div>
</xsl:template>
</xsl:transform>