Parser un fichier xml avec domxml et le mettre en forme avec xslt

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 906 fois - Téléchargée 25 fois

Contenu du snippet

Ce code va vous permettre :

- parser un fichier xml
- mettre en forme le fichier xml avec xslt

L'extension utilisé est DomXml/DomXslt.
Un bout d'application est présenté ici, un carnet d'adresse.

Le fichier carnet.xml contient les données du carnet d'adresse.
Le fichier carnet.xsl permet la mise en forme des données xml.
Le fichier carnet.php permet de parser et de mettre en forme le fichier xml dynamiquement via php.

Source / Exemple :


- carnet.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<carnet>
	<personne>
		<nom>DUPONT</nom>
		<prenom>Pierre</prenom>
		<age>17</age>
	</personne>
	<personne>
		<nom>DUPONT</nom>
		<prenom>Jacky</prenom>
		<age>46</age>
	</personne>
	<personne>
		<nom>DUPONT</nom>
		<prenom>René</prenom>
		<age>23</age>
	</personne>
</carnet>

- carnet.xsl :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
	<html>
		<head>
			<meta name="author" content="orion"/>
			<style type="text/css">
			.bg-0 { background-color: #efefff; }
			.bg-1 { background-color: #efffef; }
			</style>
		</head>
		<body bgcolor="white" text="black">
		<table><xsl:apply-templates match="carnet"/></table>
		</body>
	</html>
</xsl:template>

<xsl:template match="carnet">
	<xsl:for-each select="personne">
		<tr class="bg-{position() mod 2}">
			<td>Nom: <xsl:value-of select="nom"/></td>
			<td>Prenom: <xsl:value-of select="prenom"/></td>
			<td>Age: <xsl:value-of select="age"/> ans</td>
		</tr>
	</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

- carnet.php :

<?php
$xml = domxml_open_file('carnet.xml');
$xsl = domxml_xslt_stylesheet_file('carnet.xsl');
$html = $xsl->process($xml);
echo $html->dump_mem();
?>

Conclusion :


Bon courage.

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de fabrice_pi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.