How can I select the first element using XSLT?

92,889

Solution 1

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>

Solution 2

//newsItem[1]

should do

Solution 3

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>

Solution 4

//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]!

Share:
92,889
John B
Author by

John B

I'm a Web Developer working... um... here! YES, STACK OVERFLOW!!! I've been on the Ads Dev Team for about a year, and was on the Internal Dev Team for a few years before that. I specialize in C# and JavaScript but I dabble in many other languages. Check out my blog: Johnny Code Check out Stuff My Kids Said

Updated on June 20, 2020

Comments

  • John B
    John B almost 4 years

    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?

    <xml>
        <news>
            <newsitem>
                <dateCreated>2009-09-09</dateCreated>
                <summary>Something great happened</sumamry>
            </newsitem>
            <newsitem>
                <dateCreated>2009-09-08</dateCreated>
                <summary>Something bad happened</sumamry>
            </newsitem>
            <newsitem>
                <dateCreated>2009-09-07</dateCreated>
                <summary>Something really bad happened</sumamry>
            </newsitem>
        </news>
    </xml>