2010-05-12 7 views
0

J'ai une structure d'URL comme ceci:XSLT comment fusionner des listes de paramètres

http://my.domain.com/generated.xml?param1=foo&param2=bar&xsl=path/to/my.xsl 

Le XML généré sera transformé en utilisant la donnée feuille de style XSL. Les deux autres paramètres sont trop intégrés comme ceci:

<root> 
    <params> 
    <param name="param1">foo</param> 
    <param name="param2">bar</param> 
    </param> 
    ... 
</root> 

Maintenant, je veux créer avec XSLT un lien avec une nouvelle URI qui maintient les paramètres existants et ajoute un ou plusieurs nouveaux paramètres tels que page=3 ou sort=DESC. Si le paramètre donné existe déjà, il doit être remplacé.

Je ne suis pas sûr comment faire cela. Comment passer plusieurs paramètres (facultatifs) à un modèle. Comment fusionner deux listes de paramètres.

Des idées?

Merci;)

+0

Connaissez-vous à l'avance les noms des paramètres optionnels? – Welbog

+0

N ° 'page' et 'tri' ne sont que quelques exemples. Le nombre et le nom des paramètres acceptés peuvent varier en fonction de param1 et param2. –

Répondre

0

Votre but, si je comprends bien, est de construire une chaîne comme ceci: http://my.domain.com/generated.xml?param1=foo&param2=bar&page=3&sort=DESC&xsl=path/to/my.xsl Sans répéter un paramètre. Donc, si une demande est arrivé comme ceci http://my.domain.com/generated.xml?param1=foo&sort=ASC&xsl=path/to/my.xsl vous ne voudriez pas faire accidentellement le résultat comme ceci http://my.domain.com/generated.xml?param1=foo&sort=ASC&page=3&sort=DESC&xsl=path/to/my.xsl. Est-ce correct?

Si c'est le cas, je définirais une variable pour chaque paramètre dont vous avez besoin, en lui attribuant la valeur de l'URL le cas échéant et une valeur par défaut sinon. Quelque chose le long de ces lignes:

<xsl:variable name="sort"> 
    <xsl:choose> 
    <xsl:when test="/root/params/param[name='sort']"> 
     <!-- Use the available parameter if it exists. --> 
     <xsl:value-of select="/root/params/param[name='sort']/text()"/> 
    </xsl:when> 
    <xsl:otherwise> 
     <!-- Use a default value when the parameter doesn't exist. --> 
     <xsl:text>DESC</xsl:text> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 

Et quand vous construisez votre URI résultant vous pouvez simplement utiliser $sort et ne pas avoir à se soucier de savoir si elle a été remplie avec une valeur par défaut ou par paramètre d'URL.

Questions connexes