2010-05-17 29 views
3

L'utilisation de XML :: LibXSLT de Perl nécessite que j'utilise XSLT 1.0, ce qui signifie que je suis bloqué sans fonctionnalités XSLT 2.0. Existe-t-il un moyen de tamponner du texte dans une sortie en texte brut de mon traitement? Ce que je veux:XSLT 1 Espacement de texte brut

<values> 
    <headers> 
     <header>Header 1</header> 
     <header>Header 2</header> 
    </headers> 
    <value> 
     <one>First value 1</one> 
     <two>First value 2</two> 
    </value> 
    <value> 
     <one>Second value 1</one> 
     <two>Second value 2</two> 
    </value> 
    .... 
    <value> 
     <one>Nth value 1</one> 
     <two>Nth value 2</two> 
    </value> 
</values> 

Pour devenir

Header 1   Header 2 
First value 1  First value 2 
Second value 1 Second value 2 
.... 
Nth value 1  Nth value 2 

Je me rends compte que XSLT est pas nécessairement parfaitement à ce genre type de formatage, mais les données seront probablement être modulée en d'autres moyens.

Répondre

2

Il y a toujours le « pas cher » mode de texte de remplissage en utilisant une constante de chaîne et de faire une copie du nombre nécessaire pour pad, comme ceci:

<xsl:variable name="space" select="'      '" /> 
<xsl:variable name="text" select="'Header 1'" /> 
<xsl:value-of select="concat($text,substring($space,string-length($text)))" /> 
+0

fonctionne comme un charme, merci. – justkt

+0

N'utilisez-vous pas ici l'espace de conservation? Je ne faisais que demander. http://www.w3schools.com/xsl/el_preserve-space.asp –

+1

@AJ: Non. Notez que la sortie demandée dans la question est du texte, pas du XML ou du HTML. – Lucero