une idee pour cette tranformation XSLT ?

Gregoire Cachet <[email protected]> Fri, 05 Mar 2004 18:50:23 +0100
Newsgroups gmane.comp.web.blogv2.devel
Message-ID <[email protected]>
salut,

je cherche a écrire une feuille de style XSLT pour faire le menage dans 
les langues, mais je lutte un peu ...

en gros, je passe deux paramètres au moteur :
- LANG la langue voulue,
- DEFAULT_LANG la langue par defaut de l'application

voici ce que je veux faire :
- conserver toutes les balises dont la langue n'est pas spécifiée, 
conserver les attributs des balises et les noeuds texte
- laisser les balises dont la langue est LANG, supprimer toutes les 
autres langues (et virer les @xml:lang ils ne servent plus a rien)
- S'il n'y a aucune balise frère portant le même nom et ayant la langue 
LANG, recuperer la balise frere du même nom qui a la langue DEFAULT_LANG

C'est sur ce dernier point que je butte ...

voici un exemple de XML a traiter :

<?xml version="1.0" encoding="UTF-8" ?>

<categorie id="truc">
<create-time>1077743684</create-time>
<parent>ROOT</parent>
<name xml:lang="fr">Nouvelle catégorie</name>
<name xml:lang="en">New category</name>
<name xml:lang="de">Neue Categorie</name>
</categorie>

voici ce que j'ai deja dans mon XSLT :

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>

<xsl:param name="DEFAULT_LANG" />
<xsl:param name="LANG" />

<xsl:template match="/">
    <xsl:apply-templates select="*[lang($LANG) or not(@xml:lang)]" />
</xsl:template>

<xsl:template match="@*|node()">
    <xsl:copy>   
        <xsl:apply-templates select="*[lang($LANG) or not(@xml:lang)] | 
@*[name() != 'xml:lang'] | text()" />
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>


Quelqu'un a-t-il une idée pour traiter ce dernier point ?

-- 
Grégoire Cachet - Développeur intégrateur chez Audacy
http://www.zwiffer.org           http://www.audacy.fr