OVH Cloud OVH Cloud

Pb generation de document RDF (DOM)

1 réponse
Avatar
Jeremie Picaude
Bonjour à tous,

Je souhaite créer un fichier RDF à l'aide de la classe DOMDocument
et de MySQL.

Le problème, c'est que mon navigateur me renvoie le code source du
script au lieu d'agir.
Le truc bizarre c'est que seule une partie du code est renvoyée, celle
se trouvant après l'instanciation de mon DOMDocument.

Vous pouvez voir l'effet à http://www.reseau-sam.org/routage.php.
Voici mon code ci-dessous
Merci de votre aide,


Jérémie

<?php
header("Content-type: text/xml");

$d = new DOMDocument('1.0', 'utf-8');
$r = $d->createElementNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"RDF:RDF");
$r->setAttribute("xmlns:RN", "http://www.reseau-sam.org/rdf#");
$d->appendChild($r);

try {
include_once("Connections/cnSAM.php");
$db = mysql_select_db($database_cnSAM_Fiche);
if(!$db)
throw new Exception('Impossible de sélectionner la base.');

$rs = mysql_query("SELECT DMD.ID_DMD, DMD.INTITULEDEMANDE, DEP.DATEDEPOT
FROM DEMANDE DMD INNER JOIN DEPOSE DEP ON(DMD.ID_DMD=DEP.ID_DMD);";

if(!rs)
throw new Exception("La requête n'a pu aboutir.");

$idsDemandes = array();

while($o = mysql_fetch_object($rs)) {
$e = $d->createElement("RDF:Description");

$e->setAttribute("RDF:About"; "http://www.reseau-sam.org/demandes/" .
($o->ID_DMD));
$e->appendChild($d->createElement("RN:intitule",
utf8_encode($o->INTITULEDEMANDE)));
$e->appendChild($d->createElement("RN:date",
utf8_encode($o->DATEDEPOT)));

$r->appendChild($e);
$idsDemandes[] = $o->ID_DMD;
}

$e->createElement("RDF:Seq");
$e->setAttribute("RDF:about", "http://www.reseau-sam.org/demandes");
$r->appendChild($e);

foreach($idsDemandes as $id) {
$l = $d->createElement("RDF:li");
$l->setAttribute("RDF:resource",
"http://www.reseau-sam.org/demandes/$id");
$e->appendChild($l);
}
} catch(Exception $e) {
exit($e->getMessage());
}

echo($d->saveXML());

?>

1 réponse

Avatar
Olivier Miakinen

Le problème, c'est que mon navigateur me renvoie le code source du
script au lieu d'agir.


C'est donc qu'il a reçu le code source, puisque ce n'est au au client
mais au serveur d'« agir ».

Le truc bizarre c'est que seule une partie du code est renvoyée, celle
se trouvant après l'instanciation de mon DOMDocument.


Non, non, *tout* le code est renvoyé. Il y a juste que le début, entre
le premier « < » et le premier « > », est pris pour une balise html
inconnue, et donc non affichée :
-------------------------------------------------------------------
<?php
header("Content-type: text/xml");

$d = new DOMDocument('1.0', 'utf-8');
$r = $d->
-------------------------------------------------------------------

Vous pouvez voir l'effet à http://www.reseau-sam.org/routage.php.


J'ai vu. Avec ton navigateur fais « View > Source » (Ctrl+U si tu
utilises Mozilla ou Firefox sur Windows) et tu verras aussi.

Ton problème est donc de faire savoir à ton serveur web que le fichier
routage.php doit être interprêté par l'exécutable php au lieu d'être
envoyé en « Content-Type: text/html ».

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)