2009-06-18 9 views
3

Fondamentalement, je possède une chaîne créée à partir d'une boucle par exemple, séparés par des virgules. A, B, C, Je veux me débarrasser de la dernière virgule. Maintenant, la dernière ligne devrait me donner A, B, C sans le "," dans le dernier. Quelqu'un peut-il me dire ce qui ne va pas?Substring, la fonction de longueur de chaîne en XSLT

Répondre

7

Vous êtes sortie des espaces en raison de la façon dont vous avez formaté le XML. Vous pouvez le réparer de deux façons. La première consiste à supprimer tout simplement la mise en forme:

<xsl:for-each select="valueinElement"><xsl:value-of select="@attributeValue"/>,</xsl:for-each> 

L'autre, de façon plus robuste est de changer la façon dont vous manipulez les espaces:

<xsl:for-each select="valueinElement"> 
    <xsl:value-of select="@attributeValue"/> 
    <xsl:text>,</xsl:text> 
</xsl:for-each> 

Ce que cela fait est le traitement juste la virgule comme élément afin qu'il ignore les espaces blancs entourant, au lieu de traiter la totalité des espaces à l'intérieur de la boucle for-each dans le cadre de la sortie.

Pour référence, je courais les extraits XSLT ci-dessus par rapport au fichier XML suivant:

<root> 
    <valueinElement attributeValue="dogs"/> 
    <valueinElement attributeValue="cats"/> 
    <valueinElement attributeValue="mice"/> 
    <valueinElement attributeValue="lasers"/> 
    <valueinElement attributeValue="frogs"/> 
</root> 

et a obtenu la sortie suivante dans les deux cas:

dogs,cats,mice,lasers,frogs 
+0

grand, u m'a sauvé heures !! – chugh97

+0

@Welbog: n'avez-vous pas obtenu une virgule finale après les grenouilles? Je ferais cela en utilisant concat (@attributeValue, « ») que je lance parfois Tidy sur mon XSL et je ne veux pas la mise en forme du XSL pour changer la sortie. –

3

Il suffit d'utiliser ce remplacement, il corrigera votre sortie.

<xsl:value-of select="substring($myConcatString,1,$valueLength)"/> 

avec

<xsl:value-of select="substring($myConcatString,0,$valueLength)"/> 
Questions connexes