( ! ) SCREAM: Error suppression ignored for
( ! ) Warning: DOMDocument::xinclude() [<a href='domdocument.xinclude'>domdocument.xinclude</a>]: I/O warning : failed to load external entity &quot;file:///C:/websites/georama/articles-objectifs.xml&quot; in C:\websites\vaesoli.org\www\httpdocs\vaesoli\include\LSGeorama.class.php on line 1757
Call Stack
#TimeMemoryFunctionLocation
10.0005366824{main}( )..\index.php:0
20.0011387232include( 'C:\websites\latosensu.be\www\httpdocs\master.php' )..\index.php:1
30.10607084608LSApplication->Run( )..\master.php:73
40.15947969560LSPage->Render( )..\LSApplication.class.php:602
50.15947969624LSPage->StartPage( )..\LSPage.class.php:1358
60.17717983048LSGeorama->ResolveHRef( )..\LSPage.class.php:2072
70.17827985488DOMDocument->xinclude( )..\LSGeorama.class.php:1757

( ! ) SCREAM: Error suppression ignored for
( ! ) Warning: DOMDocument::xinclude() [<a href='domdocument.xinclude'>domdocument.xinclude</a>]: could not load file:///C:/websites/georama/articles-objectifs.xml, and no fallback was found in C:\websites\vaesoli.org\www\httpdocs\vaesoli\include\LSGeorama.class.php on line 1757
Call Stack
#TimeMemoryFunctionLocation
10.0005366824{main}( )..\index.php:0
20.0011387232include( 'C:\websites\latosensu.be\www\httpdocs\master.php' )..\index.php:1
30.10607084608LSApplication->Run( )..\master.php:73
40.15947969560LSPage->Render( )..\LSApplication.class.php:602
50.15947969624LSPage->StartPage( )..\LSPage.class.php:1358
60.17717983048LSGeorama->ResolveHRef( )..\LSPage.class.php:2072
70.17827985488DOMDocument->xinclude( )..\LSGeorama.class.php:1757
Web Expertise - Utilisation d'un glossaire
 
2010-04-10 à 07:17:08

Utilisation d'un glossaire avec Vae Soli!

glossaire,acronyme,abréviation

2010-04-07 – 06:30

2010-04-07 – 19:00

2010-04-10 – 07:17

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 ?