Comment appliquer un paramètre à un attribut select
et order
dans un élément xsl:sort
? I'ld comme faire cette dynamique avec PHP avec quelque chose comme ceci:XSLT: utiliser les paramètres dans xls: attributs de tri (tri dynamique)
$xsl = new XSLTProcessor();
$xslDoc = new DOMDocument();
$xslDoc->load($this->_xslFilePath);
$xsl->importStyleSheet($xslDoc);
$xsl->setParameter('', 'sortBy', 'viewCount');
$xsl->setParameter('', 'order', 'descending');
Mais I'ld d'abord maintenant comment obtenir ce travail. J'ai essayé ce qui suit, mais cela me donne une 'erreur de compilation': 'valeur invalide $ order for order'. $sortBy
ne semble pas faire quoi que ce soit soit:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:param name="sortBy" select="viewCount"/>
<xsl:param name="order" select="descending"/>
<xsl:template match="/">
<media>
<xsl:for-each select="media/medium">
<xsl:sort select="$sortBy" order="$order"/>
// <someoutput>
</xsl:for-each>
</media>
</xsl:template>
</xsl:stylesheet>
+1 Merci beaucoup pour l'explication détaillée. C'est génial. Cela fonctionne parfaitement! Et maintenant c'est logique. Je me suis cogné la tête contre le mur ces dernières heures. Je vous remercie. –
Dimitre- Ceci est une excellente réponse m'a sauvé beaucoup de temps. J'ai une question puis-je passer une chaîne à ma variable locale a une expression xpath alors de sorte que cette variable locale sera utilisée pour for-each select = $ myLocalVar pour faire une boucle. .setParameters (null, filter, "*/person [contient (nom, 'John')] – tosi