Comment puis-je sélectionner les N derniers éléments avec XPath?

Je soutiens un site web qui génère du contenu XML qui est ensuite traduit dans des pages web à l'aide de XSLT. J'ai été invité à créer une nouvelle feuille de style qui va transformer la sortie de la "page" archive dans l'Atome pour la syndication. Le problème, je suis en cours d'exécution en est que la page archive contient un assez grand nombre d'éléments — 142 et comptage et l'alimentation ne doit jamais avoir plus d'une trentaine d'éléments.

Actuellement, la sortie de l'archive de la page ressemble à quelque chose comme ceci:

<archive>
    <year>
        <month>
            <day>
            <day>
            ...
        </month>

        ...
    </year>

    ...
</archive>

La year et month balises sont utilisées par le code HTML de transformation mais qui sont complètement hors de propos pour un flux Atom. J'avais espéré que l'utilisation de la position() fonction avec l'axe descendant serait de travailler (//day[position()>last()-30]), mais cela permet de sélectionner les 30 derniers jours de chaque mois, ce qui n'est pas du tout ce dont j'ai besoin. 🙂

Est-il un moyen de le faire avec XSLT ou XPath? Avoir à modifier le générateur XML pour ajouter, par exemple, un feed="true" attribut pour les trente derniers jours semble être une très méchant bidouille.

  • Donc, les jours de qui voulez-vous? les 30 premiers?
  • Désolé, le dernier 30. Les entrées sont dans l'ordre chronologique, les plus récents sont à la fin.
InformationsquelleAutor Ben Blank | 2009-01-19