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:

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:

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



LISEZMOI.sxw p. 5/5