XLST - Condition xsl:if ne marche pas

XLST - Condition xsl:if ne marche pas - XML/XSL - Programmation

Marsh Posté le 31-10-2010 à 17:11:11    

Bonjour,
 
Mon schéma ne prends jamais en compte ma condition. Je pense que cela peut être dû à l'encodage du fichier, mais sans trop de conviction.
J'ai un fichier XML (tetlm) qui contient chaque mot et j'aimerais avoir une phrase par ligne. J'utilise donc un formatage de sortie de la manière suivant :
 

Code :
  1. <xsl:template match="tet:Text">
  2.         <xsl:value-of select="." />
  3.         <xsl:text>&#160;</xsl:text>
  4.  <xsl:text>&#xa;</xsl:text>
  5.  <xsl:if test="Text = '.'">
  6.   <xsl:text>-- &#10;</xsl:text>
  7.  </xsl:if>
  8.     </xsl:template>


 
Cependant dans mon fichier text final, je n'ai jamais de retour à la ligne, juste la suite de mots séparés par des espaces.
Voici une partie du schéma XML :
 

Code :
  1. [...]
  2. <Text>,</Text>
  3.   <Box llx="51.21" lly="275.90" urx="53.68" ury="285.90"/>
  4. </Word>
  5. <Word>
  6.   <Text>Auguste</Text>
  7.   <Box llx="55.15" lly="275.90" urx="88.14" ury="285.90"/>
  8. </Word>
  9. <Word>
  10.   <Text>Bouvier</Text>
  11.   <Box llx="90.15" lly="275.90" urx="122.04" ury="285.90"/>
  12. </Word>
  13. <Word>
  14.   <Text>,</Text>
  15.   <Box llx="121.64" lly="275.90" urx="124.12" ury="285.90"/>
  16. </Word>
  17. <Word>
  18.   <Text>bibliothécaire</Text>
  19.   <Box llx="126.13" lly="275.90" urx="180.56" ury="285.90"/>
  20. </Word>
  21. <Word>
  22.   <Text>et</Text>
  23.   <Box llx="182.56" lly="275.90" urx="189.71" ury="285.90"/>
  24. </Word>
  25. <Word>
  26.   <Text>érudit</Text>
  27.   <Box llx="191.72" lly="275.90" urx="214.81" ury="285.90"/>
  28. </Word>
  29. <Word>
  30.   <Text>.</Text>
  31.   <Box llx="214.81" lly="275.90" urx="217.28" ury="285.90"/>
  32. </Word>
  33. <Word>
  34.   <Text>Cet</Text>
  35.   <Box llx="219.29" lly="275.90" urx="233.04" ury="285.90"/>
  36. </Word>
  37. [...]


 
Je vous remercie d'avance pour votre aide.
Cordialement.


---------------
“L'éducation est l'arme la plus puissante que l'on puisse utiliser pour changer le monde”
Reply

Marsh Posté le 31-10-2010 à 17:11:11   

Reply

Marsh Posté le 31-10-2010 à 17:20:41    

kirua_sama a écrit :

Mon schéma ne prends jamais en compte ma condition. Je pense que cela peut être dû à l'encodage du fichier, mais sans trop de conviction.


Bah non c'est dû à ta condition qui est fausse [:petrus75]

 

Dans ton template, quelle est la node de contexte? Et en considérant cette node de contexte, par quoi se traduit ton test? (penses bien que l'expression xpath `foo` est évaluée dans le contexte courant et veut donc en vérité dire `./foo`)


Message édité par masklinn le 31-10-2010 à 17:21:28

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 31-10-2010 à 18:02:04    

Désolé, je n'ai jamais travaillé avec XSL ^^.
 
Si je comprends bien dans mon context template je suis déjà dans le noeud Text ("<xsl:template match="tet:Text">" ).
Donc dans mon context courant, je dois utiliser non pas 'Text', mais la condition test=". = '.'".
 
Merci beaucoup pour ton aide.

Message cité 1 fois
Message édité par kirua_sama le 31-10-2010 à 18:10:06

---------------
“L'éducation est l'arme la plus puissante que l'on puisse utiliser pour changer le monde”
Reply

Marsh Posté le 31-10-2010 à 18:13:40    

kirua_sama a écrit :

Désolé, je n'ai jamais travaillé avec XSL ^^.


Faudrait ptet songer à apprendre dans ce cas :/


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 31-10-2010 à 18:20:27    

masklinn a écrit :


Faudrait ptet songer à apprendre dans ce cas :/


 
Tout à faire d'accord, c'est juste un investissement pas prioritaire.
J'en avais juste besoin pour un infime prétraitement dans mon travail.
 
Je te remercie beaucoup pour ton aide en tout cas.
 :hello:


---------------
“L'éducation est l'arme la plus puissante que l'on puisse utiliser pour changer le monde”
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed