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
1. 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:
Les balises table ouvrent et ferment le tableau qui contiendra les résultats de l'analyseur.
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:
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):
nom site
lien site
description sitelangage supporténom siteurl logo site
lien site
description sitetitre article
lien article
description articleauteur articletitre article
lien article
description articleauteur article
Notes:
La balise author a été ajoutée, car utilisée par beaucoup
Le conteneur en rss 1.0 est et pas . En rss 0.91, 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:
nom site
lien site
description sitenom siteurl logo site
lien site
description sitetitre article
lien article
description articleauteur article
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 (si vous avez activé cette configuration).