Algo tão simples como obter o máximo valor de um dos filhos de um nó acabou por dar-me um enorme trabalho a descobrir como se fazia. Apesar de ter feito imensas pesquisas por essa internet fora, consegui chegar a uma implementação que não me agrada muito porque acho que em XSLT deve de haver uma forma muito mais optimizada de o fazer, contudo não deixa de ser uma implementação simples de se perceber. Imagine-se o seguinte XML:
<parent>
<value>20</value>
<value>50</value>
<value>10</value>
<value>30</value>
</parent>
Para obter o valor mais alto a implementação a que cheguei foi a seguinte:
<
xsl:for-each select="parent
/value" >
<
xsl:sort data-type="number" order="descending" />
<
xsl:if test="position() = 1">
<
xsl:value-of select="number(.)" />
<
/xsl:if>
<
/xsl:for-each>
Um dos problemas desta implementação é o facto de se fazerem tantos ciclos quanto o número de filhos existentes, para não falar que o XSLT não é uma linguagem pensada para ser iterativa, logo os ciclos devem de ser evitados. Já agora só por curiosidade se o objectivo for obter o mínimo basta mudar o order="descending" para order="ascending".
Sem comentários:
Enviar um comentário