Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
scrutaridata:impl:spip [2009/06/02 15:39]
vincent
scrutaridata:impl:spip [2013/12/13 15:30]
vincent [Exemple d'un squelette Spip d'exportation au format ScrutariData]
Ligne 1: Ligne 1:
 ====== ScrutariData et Spip ====== ====== ScrutariData et Spip ======
  
-Dans le cadre de la Coredem, ​deux sites sous Spip exportent leurs méta-données au format ScrutariData : [[http://​www.rinoceros.org|Rinoceros]] et le [[http://​www.world-governance.org|forum pour une nouvelle gouvernance mondiale]]. Les squelettes de Spip peuvent effectivement être utilisés pour créer du code XML plutôt que du HTML (les flux RSS créés par Spip sont aussi gérés par des boucles).+Dans le cadre de la Coredem, ​plusieurs ​sous Spip exportent leurs méta-données au format ScrutariData : par exemple, ​[[http://​www.rinoceros.org|Rinoceros]] et le [[http://​www.world-governance.org|forum pour une nouvelle gouvernance mondiale]]. Les squelettes de Spip peuvent effectivement être utilisés pour créer du code XML plutôt que du HTML (les flux RSS créés par Spip sont aussi gérés par des boucles).
  
-Le seul problème rencontré pour le moment est l'impossibilité de transmettre les libellés multilingues des mots-clés (cas du site du Forum pour une nouvelle gouvernance mondiale).+L'exemple ci-dessous est du site [[http://​eau.d-p-h.info/​|Ressources ​pour une gestion durable de l'​eau]] et a été réalisé par Thierry Eraud. Ces boucles doivent être adaptées à chaque site.
  
-**Avis aux spipeurs ​insérer ici un exemple de boucle**+En effet, il est rare d'​inclure tous les articles d'un site Spip dans l'​export au format Scrutari (par exemple, on n'​exporte pas la page Contacts) ​seules les articles correspondant à des ressources sont à exporter. La façon dont ces articles sont distingués des autres articles dépend de l'​organisation du site. Cela peut-être par un mot-clé ou une rubrique. Dans le site donné en exemple, c'est la rubrique avec l'​identifiant 1 qui sert à regrouper tous les articles correspondant à une ressource. 
 + 
 +Pour les mots-clés, le problème est le même : tous les mots-clés utilisés par un site Spip ne sont pas pertinents (on peut par exemple utiliser des mots-clés dans un but technique ​de sélection de telle ou telle page). Dans ce cas-là, la solution est de répartir les mots-clés dans des groupes et de ne garder que les groupes concernés. Dans le cas de l'​exemple,​ tous les mots-clés sont exportés sauf ceux du groupe « reserve ». 
 + 
 +===== Exemple d'un squelette Spip d'​exportation au format ScrutariData ===== 
 + 
 +Ce squelette Spip est enregistré dans le dossier squelettes/ et sera appelé comme n'​importe quel autre squelette. Par exemple, s'il est enregistré sous le nom ''​scrutari.html'',​ il sera appelé via ''​spip.php?​page=scrutari''​. 
 + 
 +<code xml> 
 +[(#​HTTP_HEADER{Content-type:​ text/xml; charset=UTF-8})]<?​xml version="​1.0"​ encoding="​UTF-8"?>​ 
 +<​base>​ 
 + <​base-metadata>​ 
 + [(#REM) 
 + authority-uuid est un identifiant universel propre au producteur de base 
 + base-name est le nom technique de la base (en minuscules sans accent ni espace) 
 +
 + <​authority-uuid>​15f2bd12-f4d0-8314-0800200c9a66</​authority-uuid>​ 
 + <​base-name>​ressouces_eau</​base-name>​ 
 + 
 + [(#REM) 
 + Les sites ressources sont multilingues,​ mais il n'y a pas de secteurs propres a chaques langues. 
 + Les articles de la rubrique ressources peuvent etre dans n'​importe quelle langue. 
 + On definit dans un premier temps un tableau des langues utilisees dans la rubrique ressources. 
 + ]  
 + #​SET{tab_lang,​ #​ARRAY{''​}} 
 + [(#​SET{tab_lang,​ [(#​GET{tab_lang}|push{#​LANG})]})]  
 + <​BOUCLE_langues(ARTICLES){id_rubrique=1}{lang != #​LANG}>​ 
 + [(#​SET{tab_lang,​ [(#​GET{tab_lang}|push{#​LANG})]})] 
 + </​BOUCLE_langues>​ 
 + [(#​SET{tab_lang,​[(#​GET{tab_lang}|array_unique)]})] 
 +  
 + [(#REM) 
 + Definition des intitules courts et des intitules longs dans les differentes langues. 
 + Le titre ainsi que le descriptif du site peuvent etre renseignes dans les differents langues  
 + grace aux balises multi 
 +
 + <​intitule-short>​ 
 + <​BOUCLE_intitule_short(ARTICLES){id_rubrique=1}{lang IN #​GET{tab_lang}}>​ 
 + [(#​LANG|unique{short}|?​{'​ ',''​}) 
 + [<lib xml:​lang='#​LANG'>​(#​NOM_SITE_SPIP|texte_backend)</​lib>​] 
 +
 + </​BOUCLE_intitule_short>​ 
 + </​intitule-short>​ 
 + <​intitule-long>​ 
 + <​BOUCLE_intitule_long(ARTICLES){id_rubrique=1}{lang IN #​GET{tab_lang}}>​ 
 + [(#​LANG|unique{court}|?​{'​ ',''​}) 
 + [<lib xml:​lang='#​LANG'>​(#​DESCRIPTIF_SITE_SPIP|supprimer_tags|texte_backend)</​lib>​] 
 +
 + </​BOUCLE_intitule_long>​ 
 + </​intitule-long>​ 
 + <​lang-ui>​ 
 + <​BOUCLE_lang_ui(ARTICLES){id_rubrique=1}{lang IN #​GET{tab_lang}}>​ 
 + [<​lang>​(#​LANG|unique{langue_ui})</​lang>​] 
 + </​BOUCLE_lang_ui>​ 
 + </​lang-ui>​ 
 + [<​base-icon>#​URL_SITE_SPIP/​(#​ENV*{favicon} 
 + |sinon{#​CHEMIN{favicon.ico}} 
 + |sinon{#​LOGO_SITE_SPIP} 
 + |image_passe_partout{16,​16} 
 + |image_recadre{16,​16,​center} 
 + |image_format{ico}|extraire_attribut{src}) 
 + </​base-icon>​] 
 + </​base-metadata>​ 
 +  
 + [(#REM) 
 + Dans le cas des sites ressources, les articles devant etre indexes par Scrutari sont uniquement 
 + dans la rubrique ressources. Ici la rubrique ressources est la rubrique 1 
 +
 +<​BOUCLE_ressources(RUBRIQUES){id_rubrique=1}>​ 
 + <corpus corpus-name="​ressources">​ 
 + <​corpus-metadata>​ 
 + <​intitule-corpus>​ 
 + <lib xml:​lang='​fr'>​Ressources</​lib>​ 
 + </​intitule-corpus>​ 
 + <​intitule-fiche>​ 
 + <lib xml:​lang='​fr'>​Ressource</​lib>​ 
 + </​intitule-fiche>​ 
 + </​corpus-metadata>​ 
 + [(#REM) 
 + On recupere tous les articles de la rubrique et sous-rubriques 
 +
 + <​BOUCLE_fiches(ARTICLES){branche}>​ 
 + <fiche fiche-id="#​ID_ARTICLE">​ 
 + <​titre>​[(#​TITRE|supprimer_numero|texte_backend)]</​titre>​ 
 + [<​soustitre>​(#​SOUSTITRE|texte_backend)</​soustitre>​] 
 + <​date>​[(#​DATE|affdate{'​Y-m-d'​})]</​date>​ 
 + <​lang>#​LANG</​lang>​ 
 + <​href>#​URL_SITE_SPIP/#​URL_ARTICLE</​href>​ 
 + </​fiche>​ 
 + </​BOUCLE_fiches>​ 
 + </​corpus>​ 
 + 
 + [(#REM) 
 + On parcourt tous les mots cles sauf ceux des groupes de mot reserve utilises 
 + a autre chose 
 +
 +<​BOUCLE_groupe_mots(GROUPES_MOTS){titre != reserve}>​  
 + <​thesaurus thesaurus-name="​groupe_[(#​ID_GROUPE)]">​ 
 + <​thesaurus-metadata>​ 
 + <​intitule-thesaurus>​ 
 + <​BOUCLE_titre_groupe(ARTICLES){id_rubrique=1}{lang IN #​GET{tab_lang}}>​ 
 + [(#​LANG|unique{titre_groupe#​_groupe_mots:​ID_GROUPE}|?​{'​ ',''​}) 
 + [<​lib xml:​lang='#​LANG'>​(#​_groupe_mots:​TITRE|texte_backend)</​lib>​] 
 +
 + </​BOUCLE_titre_groupe>​ 
 + </​intitule-thesaurus>​ 
 + </​thesaurus-metadata>​ 
 + <​BOUCLE_mots_cles(MOTS){id_groupe}>​ 
 + <​motcle motcle-id="#​ID_MOT">​ 
 + <​BOUCLE_titre_mot(ARTICLES){id_rubrique=1}{lang IN #​GET{tab_lang}}>​ 
 + [(#​LANG|unique{titre_mot#​_mots_cles:​ID_MOT}|?​{'​ ',''​}) 
 + [<lib xml:​lang='#​LANG'>​(#​_mots_cles:​TITRE|texte_backend)</​lib>​] 
 +
 + </​BOUCLE_titre_mot>​ 
 + </​motcle>​  
 + </​BOUCLE_mots_cles>​ 
 + </​thesaurus>​ 
 +</​BOUCLE_groupe_mots>​  
 + 
 +[(#REM) 
 + On fait le lien entre les articles et les mots cles 
 +
 + 
 +<​BOUCLE_themes_indexation(GROUPES_MOTS){titre != reserve}>​  
 + <​indexation-group corpus-path="​ressources"​ thesaurus-path="​groupe_[(#​ID_GROUPE)]">​ 
 + <​BOUCLE_sous_themes_indexation(MOTS){id_groupe}>​ 
 + <​BOUCLE_articles_lies_sous_themes(ARTICLES){id_mot}{branche}><​indexation fiche-id='#​ID_ARTICLE'​ motcle-id='#​ID_MOT'/></​BOUCLE_articles_lies_sous_themes>​  
 + </​BOUCLE_sous_themes_indexation>​ 
 + </​indexation-group>​ 
 +</​BOUCLE_themes_indexation>​ 
 + 
 +</​BOUCLE_ressources>​ 
 +</​base>​ 
 + 
 +</​code>​ 
 + 
 +===== Exemple de fichier d'​information ===== 
 + 
 +Comme il est indiqué à la page sur les [[serveurscrutari:​config:​scrutariinfo|fichiers d'​information]],​ le serveur Scrutari ne charge pas directement le fichier au format ScrutariData. Il passe par un intermédiaire qui est un fichier de très petite taille qui indique si une mise à jour à eu lieu depuis le dernier passage du robot du serveur Scrutari. 
 + 
 +L'​exemple suivant, toujours tiré du même site, est un squelette très simple permettant de générer le fichier d'​information. 
 + 
 +<code xml> 
 +[(#​HTTP_HEADER{Content-type:​ text/xml; charset=UTF-8})]<?​xml version="​1.0"​ encoding="​UTF-8"?>​ 
 +<​header>​ 
 + [(#REM) 
 + Seuls les articles de la rubrique ressources sont pris en compte. 
 + On recupere la date du dernier article de la rubrique. 
 +
 + <​BOUCLE_date(RUBRIQUES){id_rubrique=1}>​ 
 + <​date>​[(#​DATE|affdate{'​Y-m-d'​})]</​date>​ 
 + </​BOUCLE_date>​ 
 + <​path>​spip.php?​page=scrutari</​path>​ 
 +</​header>​ 
 +</​code>​
  
scrutaridata/impl/spip.txt · Dernière modification: 2016/07/06 18:33 par vincent
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0