Developpez.com

XML

Choisissez la catégorie, puis la rubrique :

logo
Sommaire > Le 'XML Stylesheet Language : Transformations' (XSLT) > Feuilles XSLT > Modification en recopie d'un XML
        Recopier un XML en modifiant les caractères des contenus
        Recopie d'un XML en supprimant certaines balises et leurs contenus
        Suprimer des balises mais en gardant leur contenu



Auteur : Eric Grimois
Version : 06/02/2007
Recopier un XML en modifiant les caractères des contenus
Ceci n'est possible que pour uniformiser certaines données, et uniquement pour des modifications au caractère près. Pour des sous-chaînes, regardez plutôt du côté de faq La Fonction 'Replace'.

Dans cet exemple, le code permet de recopier un xml mais en passant tous les caractères minuscules en majuscules (non accentués).
Le XML

<?xml version="1.0" encoding="UTF-8"?>
<racine>
<a titre="Premier">
<it>première partie</it>
</a>
<a titre="Second">
<it>seconde partie</it>
</a>
</racine>
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="node()">
		<xsl:copy>
			<xsl:apply-templates select="node()|@*"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="text()">
<xsl:value-of select="translate(.,'abcdefghijklmnopqrstuvwxyzàâäéèêëîïôöûüù','ABCDEFGHIJKLMNOPQRSTUVWXYZAAAEEEEIIOOUUU')"/>
	</xsl:template>
	<xsl:template match="@*">
		<xsl:attribute name="{name()}">
<xsl:value-of select="translate(.,'abcdefghijklmnopqrstuvwxyzàâäéèêëîïôöûüù','ABCDEFGHIJKLMNOPQRSTUVWXYZAAAEEEEIIOOUUU')"/>
		</xsl:attribute>
	</xsl:template>
</xsl:stylesheet>
Le Résultat

<?xml version="1.0" encoding="UTF-8"?>
<racine>
<a titre="PREMIER">
<it>PREMIERE PARTIE</it>
</a>
<a titre="SECOND">
<it>SECONDE PARTIE</it>
</a>
</racine>

Auteur : Eric Grimois
Version : 06/02/2007
Recopie d'un XML en supprimant certaines balises et leurs contenus
Cela permet de filtrer le contenu du XML, afin de ne conserver que l'information utile.

Dans cet exemple c'est la balise aut qui est supprimée.
Le XML

<?xml version="1.0" encoding="UTF-8"?>
<racine>
<a titre="Premier">
<aut>titi</aut>
<it>pemière partie</it>
</a>
<a titre="Second">
<it>seconde partie</it>
<aut>toto</aut>
</a>
</racine>
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="node()">
		<xsl:copy>
			<xsl:apply-templates select="node()|@*"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="text()">
		<xsl:value-of select="."/>
	</xsl:template>
	<xsl:template match="@*">
		<xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
	</xsl:template>
	<xsl:template match="aut"></xsl:template>
</xsl:stylesheet>
Le Résultat

<?xml version="1.0" encoding="UTF-8"?>
<racine>
<a titre="Premier">

<it>pemière partie</it>
</a>
<a titre="Second">
<it>seconde partie</it>

</a>
</racine>

Auteur : Erwan Amoureux
Version : 06/02/2007
Suprimer des balises mais en gardant leur contenu
Cela peut-être utile pour, par exemple, retirer des balises de mise en forme superflues, ou pour extraire une information condensée.

Exemple avec des balises i, u et b (balises HTML de mise en forme)
Le XML

<?xml version="1.0" encoding="UTF-8"?>
<R>
<chapitre num="1" titre="exemple" >
<para>Ceci est un <b>exemple</b> de texte que l'on souhaite purger
 de ses <i><u>balises </u></i>de style <i><u><b>i,b et u</b> </u></i></para>
</chapitre>
</R>
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="node()">
		<xsl:copy>
			<xsl:apply-templates select="node()|@*"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="text()">
		<xsl:value-of select="."/>
	</xsl:template>
	<xsl:template match="@*">
		<xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
	</xsl:template>
	<xsl:template match="i|u|b">
		<xsl:apply-templates select="node()"/>
	</xsl:template>
</xsl:stylesheet>
Le Résultat

<?xml version="1.0" encoding="UTF-8"?>
<R>
<chapitre num="1" titre="exemple">
<para>Ceci est un exemple de texte que l'on souhaite purger
 de ses balises de style i,b et u </para>
</chapitre>
</R>


Consultez les autres pages sources


Valid XHTML 1.0 TransitionalValid CSS!

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 et 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.

Contacter le responsable de la rubrique XML