Что я могу сделать, чтобы получить 5 самых высоких значений с xslt? - PullRequest
0 голосов
/ 21 октября 2019

Мне нравится писать программу xslt, в которой я могу получать значения из файла XML и преобразовывать их. в этом XML-файле у тега есть некоторые обязательства. это обязательство имеет некоторые свойства, такие как значение времени в секундах.

например:

<phases ...>
   <phase starttime="201834"/>``
   <phase starttime="2018103845"/>
   …

Как я могу написать с xslt Правильный код, чтобы получить 5 самых высоких времен от фаз?

Первая идея была с "template match =…" в xslt.

1 Ответ

0 голосов
/ 22 октября 2019

Например, с учетом:

XML

<phases>
    <phase starttime="5"/>
    <phase starttime="15"/>
    <phase starttime="30"/>
    <phase starttime="22"/>
    <phase starttime="40"/>
    <phase starttime="12"/>
    <phase starttime="21"/>
    <phase starttime="8"/>
    <phase starttime="14"/>
</phases>

следующей таблицы стилей:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/phases">
    <results>
        <xsl:for-each select="phase">
            <xsl:sort select="@starttime" data-type="number" order="ascending"/>
            <xsl:if test="position() &lt; 6">
                <result>
                    <xsl:value-of select="@starttime" />
                </result>
            </xsl:if>
        </xsl:for-each>
    </results>
</xsl:template>

</xsl:stylesheet>

вернет:

Результат

<?xml version="1.0" encoding="UTF-8"?>
<results>
  <result>5</result>
  <result>8</result>
  <result>12</result>
  <result>14</result>
  <result>15</result>
</results>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...