2010-09-08 6 views
1

Existe-t-il un moyen simple de supprimer le remplissage, c'est-à-dire l'espace blanc de début et/ou de fin. La fonction de rembourrage EXSLT semble créer uniquement des bourrelets ou des garnitures à une certaine longueur.Rembourrage de bande XSL

+1

Qu'est-ce que « strip- rembourrage"? S'il vous plaît, éditez votre question et donnez un exemple concret de ce que vous voulez! –

+0

A propos de la gestion de l'espace blanc, il existe plusieurs scénarios ... Voir http://stackoverflow.com/questions/184431/converting-xml-to-plain-text-using-xslt-how-should-i-ignore-handle -whitespace/185048 # 185048 –

Répondre

1

Normaliser-space() ferait-il le travail pour vous? Cela réduira également les espaces à l'intérieur de la chaîne, par ex.

" this   string " 

deviendrait:

"this string" 

Si vous avez vraiment besoin d'une fonction "trim", vous pouvez probablement steal one from someone else who's already implemented it avec normalizse espace() ...

+1

Ou on pourrait utiliser la fonction de remplacement (http://www.w3.org/TR/xpath-functions/#func-replace). Il devrait fonctionner plus ou moins (c'est-à-dire non testé) comme ceci: 'replace (chaîne, '^ \ s * (. *?) \ S * $', '')'. – musiKk

2

Essayez normalize-space

<xsl:value-of select='normalize-space(string)'/> 
0

On ne sait pas ce que l'on veut - qu'est-ce que "strip padding"?

Si vous vouliez dire la fonction trim(), puis

Le FXSL library fournit une fonction de modèle pratique trim.

Cette transformation:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:import href="trim.xsl"/> 

    <xsl:output method="text"/> 
    <xsl:template match="/"> 
    '<xsl:call-template name="trim"> 
     <xsl:with-param name="pStr" select="string(/*)"/> 
    </xsl:call-template>' 
    </xsl:template> 
</xsl:stylesheet> 

lorsqu'il est appliqué sur ce document XML:

<someText> 

    This is some text 

</someText> 

produit le résultat souhaité, correct:

'This is some text'