Utilisation d'un glossaire avec Vae Soli!

glossaire,acronyme,abréviation

2010-04-07 – 06:30

2010-04-07 – 19:00

2010-04-10 – 09:18

Grâce à la nouvelle classe LSGlossary incluse dans la version 2.5.0101 de Vae Soli!, il est désormais possible de créer des substitutions qui se basent sur un glossaire. Commençons par la notion de glossaire, si vous le voulez bien.

Pour Vae Soli!, et cela n'étonnera personne, un glossaire est un fichier XML qui se présente de la manière suivante :

<?xml version="1.0" encoding="utf-8"?>
<Glossary lupdate="20080630 - 16:07:54">
    <acronym key="3GL" class="IT" keywords="" date="20061229">
        <![CDATA[Third Generation Language (programming language)]]>
    </acronym>
    <acronym key="XML" class="IT" keywords="" date="20061229">
        <![CDATA[eXtensible Markup Language]]>
    </acronym>
    …
</Glossary>

Pour rechercher un terme dans le glossaire, il faut créer un objet de classe LSGlossary puis, il faut demander au glossaire si on y trouve le terme recherché. On ne peut vraiment pas faire plus simple :

$oGlossary = new LSGlossary( 'c:/glossary/glossary.xml' );
echo $oGlossary->Find( 'XML' );

À titre d'exemple, voyez ce que signifie 'XML' : eXtensible Markup Language (le terme provient d'un véritable glossaire).

Maintenant que nous avons créé ce qu'il nous faut, à savoir un objet de la classe LSGlossary, il nous reste à l'utiliser dans le cas de substitutions. C'est un rien plus compliqué mais vraiment pas de quoi s'affoler. Voyons, de quoi a l'air une substitution ?

Comme à l'habitude, les substitutions sont maintenues dans un fichier XML. En voici un tout petit aperçu :

<?xml version="1.0" encoding="utf-8"?>
<Dictionary active="yes">
    <Data key="{XML}" active="yes" editable="yes">
        <Value><![CDATA[eXtensible Markup Language]]></Value>
    </Data>
    …
</Dictionary>

Les substitutions sont mises en {{œ}}uvre grâce à un paramètre de vos pages. Si on admet que les substitutions sont stockées dans le fichier /subst/substitutions.xml, alors voici ce que nous avons déclaré dans le géorama pour que les substitutions soient prises en charge :

<Defaults>
    <Settings>
        <LSSubstitutions><![CDATA[/subst/substitutions.xml]]></LSSubstitutions>
    </Settings>
</Defaults>

Il s'agit alors de parsemer vos textes de clefs (comme {XML}) que Vae Soli! va devoir résoudre. Dans notre cas, nous qouhaitons que {XML} soit transformé en eXtensible Markup Language. Soit, ce que nous décrivons là est le principe général des substitutions. Rien de nouveau de ce côté-là. Le défi que nous nous sommes proposé de résoudre est de faire en sorte que le résultat de la substitution, à savoir 'eXtensible Markup Language', provienne du glossaire. Allons-y … modifions le fichier de substitutions pour qu'il devienne :

<?xml version="1.0" encoding="utf-8"?>
<Dictionary active="yes">
    <Data key="{XML}" active="yes" editable="yes">
        <Value><![CDATA[.php=return Glossary('XML');]]></Value>
    </Data>
    …
</Dictionary>

Vous constaterez que le changement est mineur : nous faisons appel à une fonction … que nous avons pris soin de coder de la manière suivante :

function Glossary( $szTerm )
/*------------------------*/
{
    static $oGlossary = null;

    if ( ! $oGlossary )
    {
        $oGlossary = new LSGlossary( FIL_ResolveRoot( '/glossary/glossary.xml' ) );
    }

    if ( $oGlossary )
    {
        return ( $oGlossary->Find( $szTerm ) );
    }
    else
    {
        return ( '' );
    }
}

… et voilà, le tour est joué ! Vous avez maintenant des substitutions provenant d'un glossaire. C'est vraiment pratique car si vous y songez bien, vous pouvez encore améliorer le principe en vous servant de plusieurs glossaires différents : pourquoi pas un glossaire informatique, un glossaire économique, un glossaire financier, … ou tout simplement un glossaire des termes qui sont propres à votre métier ?

< Mai 2012 >
Lu Ma Me Je Ve Sa Di
  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      
lifetime-episode

Nos autres articles

  1. Articles
    1. /articles-core.php
    2. /articles/core/MiFID/index.php
    3. /articles/core/SEPA/index.php
    4. /articles/core/accessibility-seo/index.php
    5. /articles/core/accessible-popups/index.php
    6. /articles/core/ajax/index.php
    7. /articles/core/blogs/index.php
    8. /articles/core/business-case/index.php
    9. /articles/core/closure-report/index.php
    10. /articles/core/cmmi/index.php
    11. /articles/core/css-javascript-cursor-type/index.php
    12. /articles/core/css/index.php
    13. /articles/core/doctype/index.php
    14. /articles/core/dynamic-input/index.php
    15. /articles/core/dynamic-theme/index.php
    16. /articles/core/effort-de-gestion-de-projet/index.php
    17. /articles/core/error-handling-404/index.php
    18. /articles/core/estimations-programmeurs/index.php
    19. /articles/core/expressions-regulieres-php/index.php
    20. /articles/core/gestion-des-couleurs/index.php
    21. /articles/core/ideal-team-duration/index.php
    22. /articles/core/image-transition/index.php
    23. /articles/core/inline-javascript/index.php
    24. /articles/core/investir/index.php
    25. /articles/core/it-budget/index.php
    26. /articles/core/javascript-animation/index.php
    27. /articles/core/junctions/index.php
    28. /articles/core/les-malheurs-IT/IT-soumis-business.php
    29. /articles/core/limites-de-la-croissance/club-de-rome.php
    30. /articles/core/link-rel-canonical/eviter-duplication-url-canonique.php
    31. /articles/core/link-rel/index.php
    32. /articles/core/longitude-latitude-google-maps/index.php
    33. /articles/core/meetings/index.php
    34. /articles/core/multi-zones/index.php
    35. /articles/core/multiple-onload/index.php
    36. /articles/core/pack-and-go/index.php
    37. /articles/core/pageframe-tabs/index.php
    38. /articles/core/phases-de-projet/index.php
    39. /articles/core/php-server-variables/index.php
    40. /articles/core/pre-business-case/index.php
    41. /articles/core/project-management/principes-de-gestion-de-projet.php
    42. /articles/core/project-typology/index.php
    43. /articles/core/pso/index.php
    44. /articles/core/requirements management/index.php
    45. /articles/core/risk management/index.php
    46. /articles/core/rss/index.php
    47. /articles/core/scrum/index.php
    48. /articles/core/search-engine-optimization/accessibility-guidelines.php
    49. /articles/core/sepia/index.php
    50. /articles/core/sponsorship-meeting/index.php
    51. /articles/core/stylesheet-switching/index.php
    52. /articles/core/v-model/index.php
    53. /articles/core/vaesoli-transform-images/index.php
    54. /articles/core/wiki/index.php
    55. /articles/core/xhtml-tooltips/index.php
    56. /articles/core/xml-sitemap/index.php