xslt - нужно наибольшее значение в наборе элементов, не включая значение по умолчанию (99999999) - PullRequest
1 голос
/ 21 сентября 2010

с учетом простого фрагмента xml ...

<workers>
  <worker>
    <name>Fred</name>
    <dob>19410501</dob>
  </worker>
  <worker>
    <name>Fred</name>
    <dob>19410501</dob>
  </worker>
  <worker>
    <name>Mary</name>
    <dob>99999999</dob>
  </worker>
  <worker>
    <name>Sam</name>
    <dob>19361202</dob>
  </worker>
</workers>

Мне нужно написать несколько xslt, которые будут выдавать только имена самых старых людей, НЕ включая запись по умолчанию '99999999'.Итак, Мэри отказывается указывать свой DOB .... поэтому в моем отчете нужно посмотреть на других работников и указать имя пожилого человека.Результат должен выглядеть следующим образом:

<html>
  <body>
    Sam
  </body>
</html>

Я могу сделать это, если у меня нет DOB по умолчанию 99999999. Как это ...

<xsl:for-each select="workers/worker">
  <xsl:sort select="dob" data-type="number" order="descending" />
  <xsl:if test="position() = 1">
<html>
  <body>
    <xsl:value-of select="name" />
  </body>
</html>
  </xsl:if>
</xsl:for-each>

Это DOB по умолчанию, однако, просто вызывает у меня приступы.

Есть идеи?

1 Ответ

2 голосов
/ 21 сентября 2010

Мой XSLT немного ржавый, но попробуйте что-нибудь подобное. Важной частью является выбор всех работников, которые НЕ имеют день рождения 99999999 в вашем выборе для каждого.

<xsl:for-each select="workers/worker[dob!='99999999']">
  <xsl:sort select="dob" data-type="number" order="descending" />
  <xsl:if test="position() = 1">
<html>
  <body>
    <xsl:value-of select="name" />
  </body>
</html>
  </xsl:if>
</xsl:for-each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...