Как выбрать первый элемент с помощью XSLT?
У меня есть список новостей, отсортированных по дате. У меня есть окно предварительного просмотра, где я хочу показать только первый элемент. Как я могу это сделать с помощью 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>
Ответы
Ответ 1
Если вы хотите вывести XHTML 1.1, здесь один из способов:
<?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>
Ответ 2
//newsItem[1]
должен делать
Ответ 3
У меня был тот же вопрос, и я думаю, что нашел лучший ответ:
<xsl:for-each select="newsItem[1]">
<div><xsl:value-of select="dateCreated"/></div>
<div><xsl:value-of select="summary"/></div>
</xsl:for-each>
Ответ 4
//newsItem[1]
Выбирает первый элемент книги newsItem
, но обратите внимание, что IE5 и более поздние версии реализованы, что [0]
должен быть первым node, но в соответствии со стандартом W3C он должен быть [1]
!