[XSLT] [PHP] extraction des variable de xsl avec php
Salut tout le monde,
Désolé pour le titre j'ai pas trouvé mieux....,c'est ma première participation dans ce magnifique forum, alors je crois que c'est clair que je suis débutant et je suis vraiment besoin de votre aide le plus vite possible et merci d'avance!
Sujet :
Le but de mon application php est de reformuler une requête de recherche et relancer la recherche avec google, alors tous d'abord je vous présente mais 1er essai
Remarque: je suis obligé d'utiliser cette composition de langages :
Un extrait fichier owl qui représente un petit thesaurus
Code:
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
| <?xml version="1.0"?>
<rdf:RDF
xmlns="http://www.owl-ontologies.com/4iag2007.owl#"
<rdf:Description rdf:about="#anatomie">
<rdfs:subClassOf rdf:resource="#biologie"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
<rdf:Description rdf:about="#anatomie_végétale">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="#anatomie"/>
</rdf:Description>
<rdf:Description rdf:about="#anatomie_animale">
<rdfs:subClassOf rdf:resource="#anatomie"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
<rdf:Description rdf:about="#neuroanatomie">
<rdf:type rdf:resource="#anatomie"/>
</rdf:Description>
<rdf:Description rdf:about="#organe_des_sens">
<rdfs:subClassOf rdf:resource="#anatomie_animale"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
..
.
..
<rdf:Description rdf:about="#artère">
<rdfs:subClassOf rdf:resource="#appareil_circulatoire"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
</rdf:RDF> |
Mon but c'est de chercher pour un mot entrer par l'utilisateur son:
Terme générale:les pères
Termes spécifiques : les fils direct
Terme associer
Donc j'utilise ces trois templates xsl:
tg.xsl:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:php="http://php.net/xsl"
version="1.0">
<xsl:param name="cible"/>
<xsl:variable name="var">#<xsl:value-of select="$cible"/></xsl:variable>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="//rdf:Description[@rdf:about=$var]">
<xsl:variable name="r1"><xsl:value-of select="//rdf:Description[@rdf:about=$var]/rdfs:subClassOf/@rdf:resource"/></xsl:variable>
<xsl:variable name="r2" select="substring-after($r1,'#')"/>
<xsl:value-of select="$r2"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |
ts.xsl:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" version="1.0">
<xsl:param name="cible3"/>
<xsl:variable name="var4">#<xsl:value-of select="$cible3"/></xsl:variable>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="//rdfs:subClassOf[@rdf:resource=$var4]">
<xsl:variable name="p"><xsl:value-of select="ancestor::rdf:Description/@rdf:about"/></xsl:variable>
<xsl:variable name="p1" select="substring-after($p,'#')"/>
<xsl:value-of select="concat($p1,'+OR+')"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |
ta.xsl:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:php="http://php.net/xsl"
version="1.0">
<xsl:param name="cible2"/>
<xsl:variable name="var3">#<xsl:value-of select="$cible2"/></xsl:variable>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="//rdf:type[@rdf:resource=$var3]">
<xsl:variable name="v"><xsl:value-of select="ancestor::rdf:Description/@rdf:about"/></xsl:variable>
<xsl:variable name="v1" select="substring-after($v,'#')"/>
<xsl:value-of select="$v1"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |
Et un fichier php:
Code:
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
|
<form name="form" method="post" action="pfe.php">
<input name="requet" type="text" id="requet" size="100">
<input type="submit" name="Submit" value="Search">
</form>
<?php
if (isset($_POST['requet']))
{$x=$_POST['requet'];
//nouvelle instance
$xslt=new XSLTProcessor();
//import de la feuille de xsl avec simplexml et la fonct XSLTProcessor::omportstylesheet
$xslt -> importStylesheet(simplexml_load_file('tg.xsl'));
//definiition de param cible pour tg
$xslt -> setParameter(null, 'cible', $x );
$xslt -> registerPhpFunctions();
$y=$xslt -> transformToXml(simplexml_load_file('biologie.rdf.owl') );
$xslt -> importStylesheet(simplexml_load_file('ta.xsl'));
$xslt -> setParameter(null, 'cible2', $x );
$h=$xslt -> transformToXml(simplexml_load_file('biologie.rdf.owl') );
$xslt -> importStylesheet(simplexml_load_file('ts.xsl'));
$xslt -> setParameter(null, 'cible3', $x );
$l=$xslt -> transformToXml(simplexml_load_file('biologie.rdf.owl') );
echo '<a href="http://www.google.fr/search?hl=fr&q='.$x.'+'.$y.'+'.$h.'+'.$l.'&btnG=Rechercher&meta="target="_self">'.'clique ici'.'</a>'; |
c'est c est ps claire j'essaye d'exliquer un peut :
le probleme que les resultats retournée par les fichier xsl ne sont pas des chaine mais une feuille xml et mon but c'est de retourné exactement le mot ciblé exple:
si l'utilisateur a entrer 'anatomie' alors x = anatomie
je veut que je recupere les var suivants:
y='biologie'
h= 'anatomie animale+OR+anatomie vigitale'
l= 'neuroanatomie'
NB j'ai utiliser la fonction getParameter de php5 sans résultats
Svp qide moi jai maintenat 7j que je suis bloqué avant de tombé sur ce manifique forum
Et merci