
| |
Permet de substituer une chaine à une autre, un le nombre maximal de fois.
Le XML | <?xml version="1.0" encoding="UTF-8"?>
<text>
Ce fichier servira de test pour verifier les fonctions.
Ce fichier servira de test pour verifier les fonctions.
</text> |
Le XSLT | <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<res>
<test2>
<xsl:call-template name="Replace">
<xsl:with-param name="chaine" select="text"></xsl:with-param>
<xsl:with-param name="chaineCherche" select="'test'"></xsl:with-param>
<xsl:with-param name="chaineRempl" select="'essai'"></xsl:with-param>
<xsl:with-param name="Occur" select="1"></xsl:with-param>
</xsl:call-template>
</test2>
<test1>
<xsl:call-template name="Replace">
<xsl:with-param name="chaine" select="text"></xsl:with-param>
<xsl:with-param name="chaineCherche" select="'test'"></xsl:with-param>
<xsl:with-param name="chaineRempl" select="'essai'"></xsl:with-param>
</xsl:call-template>
</test1>
</res>
</xsl:template>
<xsl:template name="Replace">
<xsl:param name="chaine"/>
<xsl:param name="chaineCherche"/>
<xsl:param name="chaineRempl"/>
<xsl:param name="Occur"/>
<xsl:choose>
<xsl:when test="contains($chaine,$chaineCherche) ">
<xsl:choose>
<xsl:when test="number($Occur)=0">
<xsl:value-of select="$chaine"/>
</xsl:when>
<xsl:when test="$Occur>0">
<xsl:call-template name="Replace">
<xsl:with-param name="chaine" select="concat(substring-before($chaine,$chaineCherche),$chaineRempl,substring-after($chaine,$chaineCherche))"/>
<xsl:with-param name="chaineCherche" select="$chaineCherche"/>
<xsl:with-param name="chaineRempl" select="$chaineRempl"/>
<xsl:with-param name="Occur" select="$Occur - 1"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="Replace">
<xsl:with-param name="chaine" select="concat(substring-before($chaine,$chaineCherche),$chaineRempl,substring-after($chaine,$chaineCherche))"/>
<xsl:with-param name="chaineCherche" select="$chaineCherche"/>
<xsl:with-param name="chaineRempl" select="$chaineRempl"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$chaine"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> |
Le Résultat | <?xml version="1.0" encoding="UTF-8"?>
<res>
<test2>
Ce fichier servira de essai pour verifier les fonctions.
Ce fichier servira de test pour verifier les fonctions.
</test2>
<test1>
Ce fichier servira de essai pour verifier les fonctions.
Ce fichier servira de essai pour verifier les fonctions.
</test1>
</res> |
|
| |
La fonction translate permet de remplacer caractère par caractère.
Mais on a plus souvent besoin de remplacer tout une partie de la chaîne, ce template permet de le faire.
Le XML | <?xml version="1.0" encoding="UTF-8"?>
<text>
Ce fichier servira de test pour verifier les fonctions.
Ce fichier servira de test pour verifier les fonctions.
</text> |
Le XSLT | <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<res>
nombre de fois (test):
<xsl:call-template name="CharOccur">
<xsl:with-param name="chaine" select="text"></xsl:with-param>
<xsl:with-param name="chaineCherche" select="'test'"></xsl:with-param>
</xsl:call-template>
</res>
</xsl:template>
<xsl:template name="CharOccur">
<xsl:param name="chaine"/>
<xsl:param name="chaineCherche"/>
<xsl:param name="Occur" select="0"/>
<xsl:choose>
<xsl:when test="contains($chaine,$chaineCherche) ">
<xsl:call-template name="CharOccur">
<xsl:with-param name="chaine" select="substring-after($chaine,$chaineCherche)"/>
<xsl:with-param name="chaineCherche" select="$chaineCherche"/>
<xsl:with-param name="Occur" select="$Occur+1"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$Occur"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> |
Le Résultat | <?xml version="1.0" encoding="UTF-8"?>
<res>
nombre de fois (test) :
2
</res> |
|
| |
Permet de récupérer la chaîne (ou le nombre) présent le plus fréquement dans un document.
Le XML | <?xml version="1.0" encoding="UTF-8"?>
<liste>
<y>a</y>
<y>b</y>
<y>a</y>
<y>b</y>
<y>b</y>
<y>c</y>
<y>a</y>
<y>b</y>
</liste> |
Le XSLT | <?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 match="/">
La chaîne revenant le plus souvent : <xsl:call-template name="maxOccur">
<xsl:with-param name="noeuds" select="*/*"></xsl:with-param>
</xsl:call-template>
Nombre d'occurrence de cette chaine : <xsl:call-template name="maxOccurNb">
<xsl:with-param name="noeuds" select="*/*"></xsl:with-param>
</xsl:call-template>
</xsl:template >
<xsl:template name="maxOccur">
<xsl:param name="noeuds"/>
<xsl:choose>
<xsl:when test="not($noeuds[.!=$noeuds[1]])">
<xsl:value-of select="$noeuds[1]"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="count($noeuds[.=$noeuds[1]]) >= count($noeuds[.=($noeuds[. != $noeuds[1]])[1]])">
<xsl:call-template name="maxOccur">
<xsl:with-param name="noeuds" select="$noeuds[.!=($noeuds[. != $noeuds[1]])[1]]"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="maxOccur">
<xsl:with-param name="noeuds" select="$noeuds[.!=$noeuds[1]]"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="maxOccurNb">
<xsl:param name="noeuds"/>
<xsl:choose>
<xsl:when test="not($noeuds[.!=$noeuds[1]])">
<xsl:value-of select="count($noeuds)"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="count($noeuds[.=$noeuds[1]]) >= count($noeuds[.=($noeuds[. != $noeuds[1]])[1]])">
<xsl:call-template name="maxOccurNb">
<xsl:with-param name="noeuds" select="$noeuds[.!=($noeuds[. != $noeuds[1]])[1]]"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="maxOccurNb">
<xsl:with-param name="noeuds" select="$noeuds[.!=$noeuds[1]]"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> |
Le Résultat | La chaîne revenant le plus souvent : b
Nombre d'occurrence de cette chaine : 4 |
|
Consultez les autres pages sources


Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur.
Copyright © 2006 Developpez Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne
peut être faite de ce site ni de l'ensemble de son contenu : textes, documents
et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez
selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.