Comment puis-je sélectionner le premier élément en utilisant XSLT?

J'ai une liste de nouvelles, triées par dateCreated. J'ai un contrôle de boîte de prévisualisation où je veux seulement montrer le premier élément. Comment puis-je faire cela en utilisant 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>
28
demandé sur John Bubriski 2009-09-30 19:20:33

4 réponses

Si vous souhaitez afficher XHTML 1.1, voici une façon:

<?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>
47
répondu brianary 2009-09-30 15:24:48
//newsItem[1]

Devrait faire

14
répondu knittl 2009-09-30 17:06:12

J'ai eu la même question et je pense avoir trouvé une meilleure réponse:

<xsl:for-each select="newsItem[1]">
  <div><xsl:value-of select="dateCreated"/></div>
  <div><xsl:value-of select="summary"/></div>
</xsl:for-each>
6
répondu mmoossen 2011-05-25 10:01:28
//newsItem[1]

Sélectionne le premier élément book newsItem, mais notez que IE5 et plus tard a implémenté que [0] devrait être le premier nœud, mais selon la norme W3C, il devrait être [1]!

1
répondu user2113770 2013-06-20 02:54:10