condition xslt remplace d'un caractère par un autre
Bonjour,
J'aurais une petite question pour les connaisseurs. Est-il possible avec mon xslt de regarder dans mes balises xml si il y a des retours chariots et si oui les remplacer par un autre caractère par exemple "¤¤" ?
Je vous remercie d'avance :ccool:
remplace le retour chariot par un ¤
j'ai réussi à remplacer le retour chariot par un autre caractère qui est ¤ voici le code.
Code:
1 2
| <xsl:value-of select="translate(.,'
','¤¤')"/> |
si vous avez d'autre proposition de code pour faire cela je suis preneur :ccool:
remplace le retour chariot par un ¤
j'ai trouvé un code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<xsl:template name="string-replace">
<xsl:param name="str" />
<xsl:param name="search" />
<xsl:param name="replace" />
<xsl:choose>
<xsl:when test="$search and contains($str, $search)">
<xsl:value-of select="substring-before($str, $search)" />
<xsl:value-of select="$replace" />
<xsl:call-template name="string-replace">
<xsl:with-param name="str" select="substring-after($str, $search)" />
<xsl:with-param name="search" select="$search" />
<xsl:with-param name="replace" select="$replace" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$str" />
</xsl:otherwise>
</xsl:choose>
</xsl:template> |
serait-ce le bonne exemple?
Si oui il faut le placer avant le
Code:
<xsl:template match="/">
Comment définit-on les
Code:
1 2 3 4
|
<xsl:param name="str" />
<xsl:param name="search" />
<xsl:param name="replace" /> |
Merci d'avance
remplace le retour chariot par un ¤
le template de remplacement
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <xsl:template name="string-replace">
<xsl:param name="str" />
<xsl:param name="search" />
<xsl:param name="replace" />
<xsl:choose>
<xsl:when test="$search and contains($str, $search)">
<xsl:value-of select="substring-before($str, $search)" />
<xsl:value-of select="$replace" />
<xsl:call-template name="string-replace">
<xsl:with-param name="str" select="substring-after($str, $search)" />
<xsl:with-param name="search" select="$search" />
<xsl:with-param name="replace" select="$replace" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$str" />
</xsl:otherwise>
</xsl:choose>
</xsl:template> |
l'attribution de valeur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <xsl:call-template name="string-replace">
<xsl:with-param name="str">
<xsl:value-of select="."/>
</xsl:with-param>
<xsl:with-param name="search">
<xsl:text>
</xsl:text>
</xsl:with-param>
<xsl:with-param name="replace">
<xsl:text>¤</xsl:text>
</xsl:with-param>
</xsl:call-template>
<xsl:text>|</xsl:text> |
Bizarrement quand je l'affiche directement avec mon navigateur ça marche on voit que les retours chariots sont remplacés par les ¤
mais quand je fais le vrai traitement c'est à dire que mon xml devient un txt alors il me laisse les retours chariots je ne comprend plus rien
1 pièce(s) jointe(s)
remplace le retour chariot par un ¤
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template name="string-replace">
<xsl:param name="str" />
<xsl:param name="search" />
<xsl:param name="replace" />
<xsl:choose>
<xsl:when test="$search and contains($str, $search)">
<xsl:value-of select="substring-before($str, $search)" />
<xsl:value-of select="$replace" />
<xsl:call-template name="string-replace">
<xsl:with-param name="str" select="substring-after($str, $search)" />
<xsl:with-param name="search" select="$search" />
<xsl:with-param name="replace" select="$replace" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$str" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- commencement a la racine -->
<xsl:template match="/">
<!-- Parcourt tous les attributs d'un formulaire (chemin form/submits/submit) -->
<xsl:for-each select="/form/submits/submit">
<!-- Selectionne les attributs submit-date -->
<xsl:variable name="Date" select="submit-date"/>
<!-- Changement du format date de JJ/MM/AA en AAAA/MM/JJ -->
<xsl:variable name="Date_Final" select="concat(20, substring($Date, 7,2), substring($Date, 4, 2), substring($Date,1,2))"/>
<!--Affiche valeur $Date_Final-->
<xsl:value-of select="$Date_Final"/>
<xsl:text>|</xsl:text>
<!-- Selectionne les attributs submit-id numero du formulaire qui se trouveront dans la variable $id-->
<xsl:variable name="id" select="submit-id"/>
<!-- affiche la variable $id-->
<xsl:value-of select="$id"/>
<!-- Affiche le texte brut -->
<xsl:text>|</xsl:text>
<xsl:text>A</xsl:text>
<xsl:text>|</xsl:text>
<!-- boucle for qui Parcourt toutes les response-->
<xsl:for-each select="questions/question/responses/response">
<!--condition if par rapport aux question-title : si question egale au texte entre quotes, alors -->
<xsl:if test ="normalize-space(../../question-title/text()) = 'Adresse de la société'">
<!-- retour chariot-->
<xsl:text>
</xsl:text>
<!-- Affiche la valeur $Date_Final-->
<xsl:value-of select="$Date_Final"/>
<xsl:text>|</xsl:text>
<!--Affiche la valeur id-->
<xsl:value-of select="$id"/>
<!-- Affiche le texte brute-->
<xsl:text>|</xsl:text><xsl:text>B</xsl:text><xsl:text>|</xsl:text>
</xsl:if ><!--fin de la condition-->
<!--condition if par rapport aux question-title si question egale au texte entre quotes, alors-->
<xsl:if test='normalize-space(../../question-title/text()) ="Secteur d'activité"'>
<!-- retour chariot-->
<xsl:text>
</xsl:text>
<!-- Affiche la valeur $Date_Final-->
<xsl:value-of select="$Date_Final"/><xsl:text>|</xsl:text>
<!--Affiche la valeur id-->
<xsl:value-of select="$id"/>
<!-- Affiche le texte brute-->
<xsl:text>|</xsl:text><xsl:text>C</xsl:text><xsl:text>|</xsl:text>
</xsl:if ><!--fin de la condition-->
<!--condition if par rapport aux question-title sisi question egale au texte entre quotes, alors-->
<xsl:if test="normalize-space(../../question-title/text()) ='Nom'">
<!-- retour chariot-->
<xsl:text>
</xsl:text>
<!-- Affiche la valeur $Date_Final-->
<xsl:value-of select="$Date_Final"/><xsl:text>|</xsl:text>
<!--Affiche la valeur id-->
<xsl:value-of select="$id"/>
<!-- Affiche le texte brute-->
<xsl:text>|</xsl:text><xsl:text>D</xsl:text><xsl:text>|</xsl:text>
</xsl:if ><!--fin de la condition-->
<!-- affiche toutes les responses de mon document xml-->
<xsl:call-template name="string-replace">
<xsl:with-param name="str">
<xsl:value-of select="."/>
</xsl:with-param>
<xsl:with-param name="search">
<xsl:text>
</xsl:text>
</xsl:with-param>
<xsl:with-param name="replace">
<xsl:text>¤¤</xsl:text>
</xsl:with-param>
</xsl:call-template>
<xsl:text>|</xsl:text>
</xsl:for-each><!--fin de la 2eme boucle -->
<xsl:text>|</xsl:text>
<xsl:text>
</xsl:text><!-- retour chariot-->
</xsl:for-each> <!--fin de la 1ere boucle -->
</xsl:template>
</xsl:stylesheet> |