Mal à l'aide de XSLT variables pour stocker les attributs
Dans mon xslt modèle je vais avoir un for-each
déclaration. Dans ce for-each
je suis en train de différentes conditions. Je veux avoir une variable de type string qui contient les attributs de classe qui sera attribué à un <li>
.
Comme je suis nouveau sur xslt merci de me donner des exemples ou comment puis-je obtenir ce que je veux faire.
Ici est un peu mon code afin que vous puissiez voir ce que je prends au sujet de:
<xsl:if test="count($currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']) > '0'">
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<li><xsl:attribute name="class">
topNavigLi
page<xsl:number value="position()" format="1" />
<xsl:if test="@nodeName='Network' ">
has_submenu network
</xsl:if>
</xsl:attribute>
<xsl:if test="@id = $currentPage/@id">
<xsl:attribute name="class">
current topNavigLi
page<xsl:number value="position()" format="1" />
</xsl:attribute>
</xsl:if>
<xsl:if test="position() = last()">
<xsl:attribute name="class">
last topNavigLi
page<xsl:number value="position()" format="1" />
</xsl:attribute>
</xsl:if>
<xsl:if test="@id = $currentPage/@id and position() = last()">
<xsl:attribute name="class">
current last topNavigLi
page<xsl:number value="position()" format="1" />
</xsl:attribute>
</xsl:if>
Combien il serait plus élégant d'avoir une variable et que concaténer à elle tout en faisant des tests.
J'ai essayé comme ça, mais ne renvoie rien.
<xsl:variable name="li_class" select="page"> </xsl:variable>
<xsl:attribute name="class">
<xsl:value-of select="li_class" />
</xsl:attribute>
Qui ne fait presque pas de sens. S'il vous plaît, de modifier la question et de fournir un ensemble complet, mais les petites et clair exemple: 1. Document XML Source; 2. Résultat souhaité (uniquement lié à la problématique); 3. Explication des exigences que la transformation doit mettre en œuvre.
OK, je crois que j'ai compris la question, et encore fourni une réponse -- cependant, essayez d'exprimer vos problèmes de façon claire.
Juste pour souligner ce Dimitre dit: ce qui nous attend à désosser vos exigences de code qui ne fonctionne pas (et est fondamentalement mauvais) s'attend plutôt beaucoup.
J'aimerais voir ce changement de titre. Ce n'est pas un "Comment utiliser des variables dans XSLT" post: il ne porte que sur un problème spécifique. Malheureusement, google n'a pas réalisé encore.
OK, je crois que j'ai compris la question, et encore fourni une réponse -- cependant, essayez d'exprimer vos problèmes de façon claire.
Juste pour souligner ce Dimitre dit: ce qui nous attend à désosser vos exigences de code qui ne fonctionne pas (et est fondamentalement mauvais) s'attend plutôt beaucoup.
J'aimerais voir ce changement de titre. Ce n'est pas un "Comment utiliser des variables dans XSLT" post: il ne porte que sur un problème spécifique. Malheureusement, google n'a pas réalisé encore.
OriginalL'auteur Alexa Adrian | 2012-07-24
Vous devez vous connecter pour publier un commentaire.
Voici un exemple de ce que je pense que vous demandez:
Lorsque cette transformation est appliquée sur le document XML suivant:
le résultat est:
OriginalL'auteur Dimitre Novatchev
Je suis en supposant que vous voulez mettre la chaîne de caractères comme 'page1' dans une variable et de ré-utiliser?
Si oui, essayez de...
En XSLT 1.0, la syntaxe pour la définition des variables est ici un pour XSLT 2.0, il est ici. Pour accéder aux variables à l'intérieur d'un XPATH contexte, faire précéder le nom par un signe dollar ($).
OriginalL'auteur Sean B. Durkin
Obtenir la valeur des variables dans XSLT comme (avec le
$
signe):OriginalL'auteur Arcturus
Après la lecture, dans le même temps, j'ai découvert(quelque chose que cependant je savais que, la plupart du temps) que:
J'ai donc changé ma logique un peu:
J'ai mis toutes les conditions à l'intérieur de xsl attribut comme ceci:
Donc pas besoin de plus de temp var.
OriginalL'auteur Alexa Adrian