XSL: Qual a melhor forma de armazenar um nó em uma variável e usá-lo em futuras expressões xpath?

Eu preciso ser capaz de armazenar um nó definido na variável e, em seguida, executar mais filmagem / classificação nele depois. Todos os exemplos que vi disso envolvem o uso de XSL2 ou extensões que não são realmente uma opção.

Eu tenho uma lista de hotéis no meu documento XML que podem ser classificados / filtrados e, em seguida, paginados por 5 de cada vez. Eu estou achando que estou repetindo um monte de lógica como atualmente eu não encontrei uma boa maneira de armazenar os conjuntos de nós na variável xsl e, em seguida, use xpath neles para filtragem / classificação adicional.

Este é o tipo de coisa que eu estou depois (desculpe o código escrito do topo da minha cabeça, então pode não ser 100%):

<xsl:variable name="hotels" select="/results/hotels[active='true']" />
<xsl:variable name="3_star_or_less" select="/results/hotels[number(rating) <= 3]" />
<xsl:for-each select="3_star_or_less">
  <xsl:sort select="rating" />
</xsl:for-each>

Alguém tem um exemplo de como fazer melhor esse tipo de coisa?

questionAnswers(3)

yourAnswerToTheQuestion