Author: Robert Sebille, robert(at)banlieues(dot)be
XML Parser
V1.01, under GNU/GPL LICENCE
Requirements: php >= 4.1.0,
registers_globals on or off
safe_mode on or off, safe_mode_gid on
if safe_mode on
To increase your security, set
"registers_globals off" in your php.ini file !
Plan
1.Fichiers:
2.
Installation
3. Configuration et appel de l'analyseur
3.1.
INCLUDE : Dans le fichier xmlparser.php (ou une de ses instances
renommées)
3.2. POST : Via un formulaire
3.3. GET :
Via url
4. Classes de style utilisées par l'analyseur
5.
Spécifications de l'analyseur par rapport aux normes rss 1.0
et 0.9x
Fichiers:
- index.html Exemple de passages de
paramètres par formulaire ou url.
- xmlparser.php Conteneur
et configuration de l'analyseur
- xmlparser.inc Le script de
l'analyseur
- puce.gif La puce à afficher (ou pas), devant
les titres des articles syndiqués
- parser-style.css La
feuille de style de l'analyseur
- xmlparser.inc.phps Visualisation du
code de l'analyseur
- LISEZMOI.html Documentation au format html
-
LISEZMOI.txt Documentation au format texte
- LISEZMOI.sxw
Documentation au format Open Office 1.1
2. Installation
Copiez les fichiers
index.html
xmlparser.php
xmlparser.inc
puce.gif
parser-style.css
dans le répertoire ou vous voulez activer l'analyseur.
Vous pouvez installer autant d'analyseurs particuliers que vous voulez en créant d'autres instances sous d'autres noms.php de xmlparser.php, et éventuellement de index.html et parser-style.css, suivant la configuration que vous souhaitez.
Exemple 1:
xmlparser.php -> monparseur1.php, paramètres
de configuration définis dans monparseur1.php
Exemple 2:
xmlparser.php -> monparseur2.php,
[index.html->]monparseur2.html formulaire de configuration
appelant monparseur2.php, [parser-style.css->] monparseur2.css
feuille de style propre à cet analyseur
3. Configuration et appel de l'analyseur
3 manières de faire sont possibles:
INCLUDE : Dans le fichier xmlparser.php directement (cette possibilité écrase les suivantes).
POST : Via un formulaire (cette possibilité écrase la suivante et exige une autorisation dans xmlparser.php).
GET : Via url (cette possibilité exige une autorisation dans xmlparser.php).
L'analyseur regarde d'abord si les variables incluses dans xmlparser.php sont définies.
Si oui, il les prend en compte,
sinon, il cherche des variables
provenant d'un formulaire.
S'il les trouve, il les prend en compte (si elles sont autorisées),
sinon, il cherche des variables dans l'url.
S'il les trouve, il les prend en compte (si elles sont autorisées),
sinon, il affiche une erreur.
La seule variable indispensable est l'url du fichier à analyser. Si elle est manquante (ou si l'url est incorrecte), l'analyseur affiche une erreur.
3.1. INCLUDE : Dans le fichier xmlparser.php (ou une de ses instances renommées)
Vous aménagez le html de la page comme vous le voulez, et choisissez la feuille de style. La partie qui nous intéresse et doit être inclus dans cette page à l'endroit ou l'analyseur affichera ses résultats, est la suivante:
<!-- Debut de l'inclusion de l'analyseur -->
<table
class="parser">
<?php
// Ces variables écrasent
celles passées par Post ou par Get. Voir la documentation.
//
$url = "UrlDuFichierXmlaAnalyser";
// $puce = "oui";
//
$site = "oui";
// OU
// $site = "logo";
//
$post = "oui";
// $get =
"oui";
include("xmlparser.inc");
?>
</table>
<!--
Fin de l'inclusion de l'analyseur -->
Les balises table ouvrent et ferment le tableau qui contiendra les
résultats de l'analyseur.
<?php,
include("xmlparser.inc"); et ?> DOIVENT rester tels
quels et à leur place dans le code.
La configuration se fait via les variables $variable="valeur";
Pour
activer une variable, retirer les // de la ligne, pour la désactiver,
les remettre.
Attention à ne pas modifier la syntaxe:
guillemets, point-virgule final et respect de la casse
(minuscules/majuscules)!
- $url = "UrlDuFichierXmlaAnalyser"; L'adresse Internet du
fichier xml à analyser. Vous remplacez
UrlDuFichierXmlaAnalyser par une adresse xml correcte.
- $puce =
"oui"; Active l'affichage de puce.gif devant les titres des
articles syndiqués
- $site = "oui"; Affiche
le nom du site et sa description (si ils existent). Le résultat
de cette variable dépend également de la construction
du fichier xml analysé, voir « 5. Spécifications
de l'analyseur par rapport aux normes rss 1.0 et 0.9x »
ci-dessous.
- OU -
- $site = "logo"; Affiche le
logo du site et sa description (si ils existent).
- $post =
"oui"; et $get = "oui"; Autorisent le passage des
variables respectivement par formulaire et par URL. Ces variables ne
sont configurables que dans le fichier xmlparser.php SI
registers_globals est à "on" dans php.ini. Sinon,
ces autorisations pourront être aisément contournées!
3.2. POST : Via un formulaire
Vous pouvez passer les paramètres à l'analyseur via un formulaire, par exemple:
<form ACTION="xmlparser.php" METHOD="POST"
ENCTYPE="application/x-www-form-urlencoded">
Url du
fichier xml à analyser: <input type="hidden"
name="url" value="UrlDuFichierXmlaAnalyser"
/><br />
Afficher une puce devant les titres des
articles: <input type="checkbox" name="puce"
value="oui" checked /><br />
<input
type="submit" value="Envoyer"/>
</form>
Le name du champ du formulaire doit correspondre au nom de la variable et le champ value à sa valeur. Voyez index.html pour un exemple complet.
Rappel:
- la définition des variables par la méthode
précédente (directement dans le fichier) écrasera
celles passées par formulaire
- $post = "oui";
doit être activé dans xmlparser.php
- $post et $get
ne sont pas configurables par cette méthode SI
registers_globals est à "on" dans php.ini.
3.3. GET : Via url
Vous pouvez passer les paramètres à l'analyseur via
l'url, par
exemple:
xmlparser.php?url=UrlDuFichierXmlaAnalyser&site=logo&puce=oui
Voyez les exemples dans index.html.
Rappel:
- la définition des variables par les méthodes
précédentes (directement dans le fichier ou par
formulaire) écrasera celles passées par url
- $get =
"oui"; doit être activé dans xmlparser.php
-
$get et $post ne sont pas configurables par cette méthode SI
registers_globals est à "on" dans php.ini.
4. Classes de style utilisées par l'analyseur
.parser Le tableau
.psr-titre-site La rangee du tableau contenant
le titre (logo) du site
.psr-descri-site La rangee du tableau
contenant la description du site
.psr-titre Les rangees du tableau
contenant les titres des articles syndiques
.psr-descri Les
rangees du tableau contenant les descriptions des articles syndiques
Voyez parser-style.css pour exemple.
5. Spécifications de l'analyseur par rapport aux normes rss 1.0 et 0.9x
La réalisation de l'analyseur s'inspire largement du document « A step-by-step guide to building an RSS 1.0 » publié par Rael Dornfest le 25/08/2000 à http://www.oreillynet.com/lpt/a/network/2000/08/25/magazine/rss_tut.html
Les balises lues sont les suivantes, dans le schéma suivant (RSS 1.0 ne requiert pas de DTD):
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
<title>nom
site</title>
<link>lien
site</link>
<description>description
site</description>
<language>langage
supporté</language>
</channel>
<image>
<title>nom
site</title>
<url>url logo site</url>
<link>lien
site</link>
<description>description
site</description>
</image>
<item>
<title>titre
article</title>
<link>lien
article</link>
<description>description
article</description>
<author>auteur
article</author>
</item>
<item>
<title>titre
article</title>
<link>lien
article</link>
<description>description
article</description>
<author>auteur
article</author>
</item>
</rdf:RDF>
Notes:
La balise author a été ajoutée, car utilisée par beaucoup
Le conteneur en rss 1.0 est <rdf:RDF> et pas <channel>. En rss 0.91, <channel> est également un conteneur, et bcp de fichier rss 0.9x sont écrits avec les balises channel qui enferme les balises item, comme dans l'exemple ci-dessous:
<channel>
<title>nom site</title>
<link>lien
site</link>
<description>description
site</description>
<image>
<title>nom
site</title>
<url>url logo site</url>
<link>lien
site</link>
<description>description
site</description>
</image>
<item>
<title>titre
article</title>
<link>lien
article</link>
<description>description
article</description>
<author>auteur
article</author>
</item>
</channel>
Pour ces site, l'analyseur ne détecte pas les nom, lien, description et language du site, même si vous avez activé cette configuration , mais il détectera les balises contenues dans <image> (si vous avez activé cette configuration).