Сортировка xsl:sort

Сортировка XML-тегов в XSLT выполняется с использованием элемента <xsl:sort select="attribute">

Этот элемент должен размещаться внутри xsl:apply-templates или xsl:for-each. Сортировка может выполняться как по самим xml-тегам, так и по их атрибутам, порядок сортировки можно задавать по возрастанию или по убыванию.

Прототип:

<xsl:sort
	select = string-expression
	lang = { nmtoken }
	data-type = { "text" | "number" | qname-but-not-ncname }
	order = { "ascending" | "descending" }
	case-order = { "upper-first" | "lower-first" } />

XSL-шаблон для форматированного отображения XML данных (сортировка по параметру):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:template match="/document">
		<html>
		<head>
			<title><xsl:value-of select="title"/></title>
		</head>
			<body>
				<!-- Выбираем узлы structure -->
				<xsl:apply-templates select="structure">
				<xsl:sort select="@id" order="descending"/>
				</xsl:apply-templates>
			</body>
		</html>
	</xsl:template>

	<!-- Шаблон для отображения узлов /document/structure -->
	<xsl:template match="structure">
		<p>Значение: <xsl:value-of disable-output-escaping="yes" select="value"/></p>
	</xsl:template>

</xsl:stylesheet>

Сортировка по значению тега

<xsl:apply-templates select="structure">
	<xsl:sort select="value" order="descending"/>
</xsl:apply-templates>

В результате получится HTML-документ:

<html>
	<head>
		<title>Заголовок 1</title>
	</head>
	<body>
		<p>Значение: bbb</p>
		<p>Значение: aaa</p>
	</body>
</html>

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.

Комментарии

  • Без темы

    Есть результат, есть действие. Было бы удобнее, если бы было показано над какими данными производились действия. Я подозреваю, что они были пару страниц назад, но «где их там уже найдешь…».

    13.11.2012 01:56:19
    Stepan0v