Comment éviter les noms de balises à rallonge ?

Discret
Invité n'ayant pas de compte PHPfrance

14 janv. 2006, 15:55

Bonjour à tous.

Dans le but de séparer complètement le traitement des données et l'affichage, je procède de la manière suivante:

Mon script cré une chaine contenant la description xml de ma page. Je charge le fichier xsl du thème choisi, et j'affiche le html.

Mon xml ressemble donc à ceci: (en très réduit)

Code : Tout sélectionner

<page> <page_titre>Mon titre</page_titre> <module> <module_titre>Titre du module</module_titre> <formulaire> ... </formulaire> </module </page>
Mon problème est d'essayer d'éviter des noms de balises à rallonge.
Par exemple <page_titre> et <module_titre> pourraient s'appeller simplement <titre>. Mais dans ce cas, ils seraient traités de la même manièr en xsl. Par exemple:

Code : Tout sélectionner

<xsl:template match="titre"> <h1 class='maclasse'><xsl:apply-templates select='.' /></h1> </xsl:template>
Hors, je ne veux pas qu'ils soient traités par le même template.

Y a-t-il un moyen de considérer différemment une balise en fonction d'un ancetre existant ? Ou existe-t-il une meilleure manière de procéder ?

Merci de votre aide.

Discret
Invité n'ayant pas de compte PHPfrance

14 janv. 2006, 16:17

Je vais préciser mon problème.

Ma page contenu un certain nombre d'élements (menu, modules, ...). Chacun est géré par une classe dont une méthode fourni une chaine contenant son code xml.

J'aimerais simplifier autant que possible la création d'un élement. Pour cela, l'idéal serait des noms de balises très courts. mais comment ensuite incorporer ce xml dans un code plus grand ?

Actuellement, lorsqu'un module me founit son xml, avant de l'incorporer dans le code, j'utilise des expressions régulières pour modifier le nom des balises, levant l'ambiguité pour des noms à rallonge. L'inconvénient est que les balises n'ont pas le même nom dans les modules et les fichiers xsl. Est-il possible de faire cela plus proprement ? Par exemple en utilisant les espaces de noms, mais je n'ai pas réussi à trouver comment.