Prochaine révision | Révision précédente |
scrutaridata:impl:spip [2009/06/02 11:28] – créée vincent | scrutaridata:impl:spip [2016/07/06 18:33] (Version actuelle) – [Exemple d'un squelette Spip d'exportation au format ScrutariData] vincent |
---|
====== 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 permet d'identifier le producteur de la base, il peut s'agir d'un nom de domaine ou, comme ici, d'identifiant universel |
| base-name est le nom technique de la base (en minuscules sans accent ni espace) |
| ] |
| <authority>15f2bd12-f4d0-8314-0800200c9a66</authority> |
| <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> |
| |