1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
#!/usr/bin/perl -w
use XML::XPath;
use XML::XPath::XMLParser;
use strict;
my $prefix = "rdf\%3A\#\$";
print "Content-type: text/html\n\n";
my $FolderId = $ENV{'QUERY_STRING'};
if($FolderId eq "") {
TraiteXBEL("");
}
else {
TraiteXBEL($FolderId);
}
exit(0);
sub TraiteXBEL {
# usage: TraiteXBEL($InputFolderId);
#
# * SI $FolderId est defini ALORS on liste les dossiers et les liens dans le dossier correspondant ;
# * SI $FolderId est vide ALORS on liste les dossiers et les liens à la racine.
my ($InputFolderId) = @_;
my $XPATH_REQUEST1;
my $XPATH_REQUEST2;
my $XPATH_REQUEST3;
my $XPATH_REQUEST4;
my $XPATH_REQUEST5;
my $XBEL = XML::XPath->new('./xbel.xml');
if($InputFolderId eq "") {
$XPATH_REQUEST1='/xbel/folder/@id';
}
else {
$InputFolderId = $prefix.$InputFolderId;
$XPATH_REQUEST1='//folder[@id=\''.$InputFolderId.'\']/folder/@id';
}
my $nodeset = $XBEL->find($XPATH_REQUEST1);
my $NbFolders = $nodeset->size();
print "<h2>Rubriques ($NbFolders)</h2>\n";
foreach my $node ( $nodeset->get_nodelist ) {
my $FolderId = XML::XPath::XMLParser::as_string( $node );
$FolderId =~ s/[ ]+?id="(.*?)"/$1/g;
# On extrait le suffixe du $FolderId pour eviter les caracteres speciaux.
my $suffix = substr($FolderId,8);
# liste des dossiers
$XPATH_REQUEST2='//folder[@id=\''.$prefix.$suffix.'\']/title/text()';
my $FolderName = $XBEL->find($XPATH_REQUEST2);
print "<ul>";
my $nom = XML::XPath::XMLParser::as_string( $FolderName->get_nodelist );
print "<li><a href=\"./xbel.cgi?$suffix\">$nom</a></li>\n";
print "</ul>";
}
# liste des liens
if($InputFolderId eq "") {
$XPATH_REQUEST3='/xbel/bookmark/@id';
}
else {
$XPATH_REQUEST3='//folder[@id=\''.$InputFolderId.'\']/bookmark/@id';
}
$nodeset = $XBEL->find($XPATH_REQUEST3); # on rï¿upï¿e tous les attr: id
my $NbLiens = $nodeset->size();
print "<h2>Marque-pages ($NbLiens)</h2>\n";
foreach my $node ( $nodeset->get_nodelist ) {
my $BookmarkId = XML::XPath::XMLParser::as_string( $node );
$BookmarkId =~ s/[ ]+?id="(.*?)"/$1/g;
# liste des bookmarks
$XPATH_REQUEST4='//bookmark[@id=\''.$BookmarkId.'\']/title/text()';
my $BookmarkTitles = $XBEL->find($XPATH_REQUEST4);
my $BookmarkTitle = XML::XPath::XMLParser::as_string( $BookmarkTitles->get_nodelist );
$XPATH_REQUEST5='//bookmark[@id=\''.$BookmarkId.'\']/@href';
my $BookmarkUrls = $XBEL->find($XPATH_REQUEST5);
my $BookmarkUrl = XML::XPath::XMLParser::as_string( $BookmarkUrls->get_nodelist );
$BookmarkUrl =~ s/[ ]+?href="(.*?)"/$1/g;
print "<a href=\"$BookmarkUrl\">$BookmarkTitle</a><br />\n";
}
} |
Partager