Version complète: sur le forum Webmaster Hub : transformer un fichier xml en page htlm
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > XML et ses dialectes
jda
Bonjour,
J'aimerai à partir d'un fichier sitemap.xml , destiné au départ à google, créer un plan de site en htlm .
Je pense qu'il faut un fichier xls mais je ne sais pas quoi y mettre dedans blink.gif
Si quelqu'un à une idée je suis preneur.
Merci d'avance
MS-DOS_1991
Salut smile.gif

Si tu as PHP 5 d'installé, tu peux utiliser ceci: (copié sur PHPTeam)

CITATION
Fichier XML
HTML
<?xml version="1.0"?>
<population>
    <individu>
        <prenom>nicolas</prenom>
        <nom>sulpice</nom>
        <email>test_AT_phpteam.net</email>
    </individu>
    <individu>
        <prenom>georges</prenom>
        <nom>pierre</nom>
        <email>gp_AT_photo.net</email>
    </individu>
</population>

Avec PHP5 pour l'interpreter il suffira de faire :
CODE
<?php
$population = simplexml_load_file('individu.xml');

foreach($population->individu as $individu) {
   echo 'Prénom : ' ,$individu->prenom.'<br />';
   echo 'Nom : ' ,$individu->nom.'<br />';
   echo 'Email : ' , $individu->email.'<br /><br />';  
}
?>

Prénom : nicolas
Nom : sulpice
Email : test_AT_phpteam.net

Prénom : georges
Nom : pierre
Email : gp_AT_photo.net


Bonne chance wink.gif
Anonymus
Sinon, tu trouveras quantité de parser xml sur le net. Ils te permettent, comme la fonction de php5, de récupérer le contenu de ton fichier dans un tableau pour l'afficher plus facilement.
jda
Merci à tous pour vos réponses , je vais suivre vos conseils mais je suis pas sûr que ça marche car ma version php est la 4.4.1 angry.gif
Bonne journée smile.gif
ryuran
hum je pense que xslt sera plus adapté à tes besoins
http://fr.wikipedia.org/wiki/XSLT
klelugi
Bonjour Jda,

Je ne sais pas si tu veux utiliser ton flux xml de sitemap pour le soumettre aux moteurs et améliorer ta visibilité moteur. Si c'est le cas je te conseil plutôt de faire comme te l'a conseiller Anonymus.
Utilise un parseur php via librairie expat (http://fr2.php.net/xml) valable avec ta version de PHP.

Cela te permettra de pouvoir attribuer des tags html sur les parties que tu souhaites mettre en avant :
les rubriques : h2
les ss rubriques : h3
du bold sur les liens etc...

Bon courage
shaza
salut,

comme j'ai bien galéré à trouver la reponse exact que je cherchais, je te met le code complet (attention à le personnaliser)

il te faut créer un fichier le_nom_que tu veux.xsl contenant le code :

CODE
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:sitemap="http://www.google.com/schemas/sitemap/0.84" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" version="1.0" encoding="iso-8859-1" indent="yes"/>

<!-- Root template -->
<xsl:template match="/">
<html>
<head>
<title>Plan du site - Sitemap</title>
<link href="http://www.google.com/webmasters/sitemaps/docs/sitemaps.css" type="text/css" rel="stylesheet"/>
<style type="text/css">
<![CDATA[
<!--
h1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size:1.2em;
margin:0.5em;
}
h1 span {
margin-left:0.5em;
}
h1 a:link, h1 a:active{
color:#0081B3;
text-decoration:none;
}
h1 a:hover, h1 a:visited{
color:#FF0000;
text-decoration:underline;
}
p {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size:1em;
margin:0.5em;
}
p span {
margin-left:2em;
}
.header {
background: #F2F2F2;
cursor: pointer;
}
.sortup {
background: right center url(http://www.google.com/webmasters/sitemaps/images/sortup.gif) no-repeat;
font-style:italic;
color: red;
}
.sortdown {
background: right center url(http://www.google.com/webmasters/sitemaps/images/sortdown.gif) no-repeat;
font-style:italic;
color: red;
}
#liens {
width:100%;
margin-top:1em;
text-align:center;
vertical-align:top;
}
-->
]]>
</style>
<link href="gss.css" type="text/css" rel="stylesheet"/>
<script language="JavaScript">
<![CDATA[
var selectedColor = "#FF9901";
var defaultColor = "#000";
var hdrRows = 1;
var numeric = '..';
var desc = '..';
var html = '..';
var freq = '..';

function initXsl(tabName,fileType) {
hdrRows = 1;

if(fileType=="sitemap") {
numeric = ".3.";
desc = ".1.";
html = ".0.";
freq = ".2.";
initTable(tabName);
setSort(tabName, 3, 1);
}
else {
desc = ".1.";
html = ".0.";
initTable(tabName);
setSort(tabName, 1, 1);
}

var theURL = document.getElementById("head1");
theURL.innerHTML += ' ' + location;
document.title += ': ' + location;
}

function initTable(tabName) {
var theTab = document.getElementById(tabName);
for(r=0;r<hdrRows;r++)
for(c=0;c<theTab.rows[r].cells.length;c++)
if((r+theTab.rows[r].cells[c].rowSpan)>hdrRows)
hdrRows=r+theTab.rows[r].cells[c].rowSpan;
for(r=0;r<hdrRows; r++){
colNum = 0;
for(c=0;c<theTab.rows[r].cells.length;c++, colNum++){
if(theTab.rows[r].cells[c].colSpan<2){
theCell = theTab.rows[r].cells[c];
rTitle = theCell.innerHTML.replace(/<[^>]+>|&nbsp;/g,'');
if(rTitle>""){
theCell.title = "Changer l'ordre de " + rTitle;
theCell.onmouseover = function(){setCursor(this, "selected")};
theCell.onmouseout = function(){setCursor(this, "default")};
var sortParams = 15; // bitmapped: numeric|desc|html|freq
if(numeric.indexOf("."+colNum+".")>-1) sortParams -= 1;
if(desc.indexOf("."+colNum+".")>-1) sortParams -= 2;
if(html.indexOf("."+colNum+".")>-1) sortParams -= 4;
if(freq.indexOf("."+colNum+".")>-1) sortParams -= 8;
theCell.onclick = new Function("sortTable(this,"+(colNum+r)+","+hdrRows+","+sortParams+")");
}
} else {
colNum = colNum+theTab.rows[r].cells[c].colSpan-1;
}
}
}
}

function setSort(tabName, colNum, sortDir) {
var theTab = document.getElementById(tabName);
theTab.rows[0].sCol = colNum;
theTab.rows[0].sDir = sortDir;
if (sortDir)
theTab.rows[0].cells[colNum].className='sortdown'
else
theTab.rows[0].cells[colNum].className='sortup';
}

function setCursor(theCell, mode){
rTitle = theCell.innerHTML.replace(/<[^>]+>|&nbsp;|\W/g,'');
if(mode=="selected"){
if(theCell.style.color!=selectedColor)
defaultColor = theCell.style.color;
theCell.style.color = selectedColor;
theCell.style.cursor = "hand";
window.status = "Cliquer la sorte par '"+rTitle+"'";
} else {
theCell.style.color = defaultColor;
theCell.style.cursor = "";
window.status = "";
}
}

function sortTable(theCell, colNum, hdrRows, sortParams){
var typnum = !(sortParams & 1);
sDir = !(sortParams & 2);
var typhtml = !(sortParams & 4);
var typfreq = !(sortParams & 8);
var tBody = theCell.parentNode;
while(tBody.nodeName!="TBODY"){
tBody = tBody.parentNode;
}
var tabOrd = new Array();
if(tBody.rows[0].sCol==colNum) sDir = !tBody.rows[0].sDir;
if (tBody.rows[0].sCol>=0)
tBody.rows[0].cells[tBody.rows[0].sCol].className='';
tBody.rows[0].sCol = colNum;
tBody.rows[0].sDir = sDir;
if (sDir)
tBody.rows[0].cells[colNum].className='sortdown'
else
tBody.rows[0].cells[colNum].className='sortup';
for(i=0,r=hdrRows;r<tBody.rows.length;i++,r++){
colCont = tBody.rows[r].cells[colNum].innerHTML;
if(typhtml) colCont = colCont.replace(/<[^>]+>/g,'');
if(typnum) {
colCont*=1;
if(isNaN(colCont)) colCont = 0;
}
if(typfreq) {
switch(colCont.toLowerCase()) {
case "always": { colCont=0; break; }
case "hourly": { colCont=1; break; }
case "daily": { colCont=2; break; }
case "weekly": { colCont=3; break; }
case "monthly": { colCont=4; break; }
case "yearly": { colCont=5; break; }
case "never": { colCont=6; break; }
}
}
tabOrd[i] = [r, tBody.rows[r], colCont];
}
tabOrd.sort(compRows);
for(i=0,r=hdrRows;r<tBody.rows.length;i++,r++){
tBody.insertBefore(tabOrd[i][1],tBody.rows[r]);
}
window.status = "";
}

function compRows(a, b){
if(sDir){
if(a[2]>b[2]) return -1;
if(a[2]<b[2]) return 1;
} else {
if(a[2]>b[2]) return 1;
if(a[2]<b[2]) return -1;
}
return 0;
}

]]>
</script>

</head>

<!-- Store in $fileType if we are in a sitemap -->
<xsl:variable name="fileType">
<xsl:choose>
<xsl:when test="//sitemap:url">sitemap</xsl:when>
</xsl:choose>
</xsl:variable>

<!-- Body -->
<body onLoad="initXsl('table0','{$fileType}');">

<!-- Intro et lien RMC -->
<h1><a title="Création de site internet,référencement de sites Internet, agence de référencement" href="http://www.netgenez.com/">Création de sites Internet</a><span>NetGenez.com</span></h1>

<!-- Textes des tableaux -->
<xsl:choose>
<xsl:when test="$fileType='sitemap'"><xsl:call-template name="sitemapTable"/></xsl:when>
</xsl:choose>

<!-- Liens bas de page -->
<div id="liens">
<a href="http://www.netgenez.com/">Création de site internet</a> - <a href="http://www.shaza.fr">Réussissez votre référencement- Annuaires de liens en dur</a> - <a href="http://www.shaza.fr/tutos/">Comment ça marche?</a>
</div>
</body>
</html>
</xsl:template>

<!-- Tableau du sitemap -->
<xsl:template name="sitemapTable">
<p><strong>Cliquez dans les entêtes gris du tableau pour changer l'affichage des données.</strong><span>Nombres d'url dans ce sitemap : <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/></span></p>

<table border="1" width="100%" class="data" id="table0">
<tr class="header">
<td>Sitemap URL</td>
<td>Date de modification</td>
<td>Fréquence</td>
<td>Priorité</td>
</tr>
<xsl:apply-templates select="sitemap:urlset/sitemap:url">
<xsl:sort select="sitemap:priority" order="descending"/>
</xsl:apply-templates>
</table>
</xsl:template>

<!-- sitemap:url template -->
<xsl:template match="sitemap:url">
<tr>
<td>
<xsl:variable name="sitemapURL"><xsl:value-of select="sitemap:loc"/></xsl:variable>
<a href="{$sitemapURL}" target="_blank" ref="nofollow"><xsl:value-of select="$sitemapURL"/></a>
</td>
<td><xsl:value-of select="sitemap:lastmod"/></td>
<td><xsl:value-of select="sitemap:changefreq"/></td>
<td><xsl:value-of select="sitemap:priority"/></td>
</tr>
</xsl:template>

</xsl:stylesheet>


ensuite soit tu fais ton sitemap toi meme comme un grand soit tu vas à cette adresse http://www.xml-sitemaps.com/

dans ton fichier sitemap.xml tu ajoutes à la deuxième ligne :
CODE
<?xml-stylesheet type="text/xsl" href="le_chemin_vers/le_nom_que_tu_veux.xsl"?>


et voilà tu pourras voir le résultat sur mon site qui est en construction depuis un moment déja


<modérateur : merci d'utiliser la balise codebox pour les codes (un peu) longs</edit>
Snoozy01
Bonjour à tous,
(c'est mon 1er post sur le site)

Mercie à shaza pour ton code de transformation des sitemap.xml en version lisible.

Grâce à toi, je profite également du code sur mon nouveau site.

Je découvre avec bcp d'intérêts vos posts. Je vais essayer de contribuer également.

A+
Snoozy01
Shaza,

As-tu remarqué?

Quand tu ouvres ton lien (http://www.netgenez.com/sitemap.xml)
=> avec IE, il apparait un msg d'erreur : "... is null or not an object" ?
=> avec Firefox, c'est OK

Avec IE, j'ai le même message d'erreur que toi avec mon sitemap:
http://1game.free.fr/sitemap.xml

Je pense que cela vient des premières lignes de codes (dans le .xml) mais je n'ai pas trouvé un paramétrage qui fonctionne sur les 2 browsers:
<urlset
xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">


Et vous,
Avez-vous le même problème ou est-ce du à mon PC ?
Avez-vous une idée pour corriger le pb ?

Merci A+
shaza
salut,

le problème c'est q'au lieu de mettre tes liens ds ton sitemap tu remis des fichiers xml...
pour corriger le pn il suffit de suivre les indication que j'ai donné plus haut
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.