2011-09-01 4 views
4

donc j'ai cette mission et ils demandent des données fournies par XsltXslt l'aide d'un joker lors de la sélection par attribut

C'est ce que j'ai:

<xsl:apply-templates select="results/result[@name=$param0]"/> 

Ainsi, le param0 $ est donné par une fonction de transformation jquery. Mon problème est de savoir comment puis-je sélectionner tous les @name lors de l'envoi d'une certaine valeur pour param0 $? J'ai essayé la plupart des jokers mais rien ne semble fonctionner. Pouvez-vous m'aider?

XML d'entrée

<results> 
<result name="name1"> 
    <score>2500</score> 
</result> 
<result name="name2"> 
    <score>13500</score> 
</result> 
<result name="name3"> 
    <score>65100</score> 
</result> 
</results> 

sortie pour param0 $ = "NAME1"

<result name="name1"> 
<score>2500</score> 
</result> 

Donc, je dois obtenir tous les scores, je dois garder la déclaration xslt si je peux encore sélectionnez-en un.

sortie

pour param0 $ = « joker » < == Je besoin d'une sorte de joker (ont essayé beaucoup d'entre eux)

<result name="name1"> 
    <score>2500</score> 
</result> 
<result name="name2"> 
    <score>13500</score> 
</result> 
<result name="name3"> 
    <score>65100</score> 
</result> 

J'espère que cela a plus clairement ce que je cherche .. .

Répondre

4

Pourquoi ne pas utiliser un caractère générique de chaîne faux ?

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:param name="param0" select="'*'"/> 

    <xsl:template match="/"> 
     <xsl:copy-of select="results/result[@name=$param0 and $param0!='*'] 
      | 
      results/result[$param0='*']"/> 
    </xsl:template> 

</xsl:stylesheet> 

exemplaires chaque résultat quand $param0='*', sinon il copie le nœud voulu quand il y a un match comme $param0='name1'; sinon, il ne copie rien du tout.

Vous pouvez utiliser la même expression dans les xsl:apply-templates.

+1

Omg je me sens si stupide en ce moment .. Merci pour la réponse! – Sentinel

+0

Il est juste un truc. –

+2

Je pense que cela peut être simplifié à '' ou dans XPath 2.0, résultats 'select ='/résultat [$ param0 = (nom @, '*')] "' –

Questions connexes