[XML et XSLT] Tester si une chaîne est un chemin XML valide

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


hibou57
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 224
Inscription: Mer Nov 01, 2006 19:01

[XML et XSLT] Tester si une chaîne est un chemin XML valide

Message le Mer Jan 16, 2008 2:14

Bonsoir,

Heuuuu.... je vous dit tout de suite, je ne suis pas trés sûr que ce soit l'endroit pour poser ce type de question, alors ne soyez pas trop méchant(e)s avec moi. Peut-être que j'aurais dut voir un forum plus spécialisé, je ne sais pas.... mais puisqu'ici on peut parler de programmation web, alors si on peut parler aussi de celle qui implique XML+XSLT ou même d'autres joyeusetés, ça me ferait plaisir, parce que tant qu'à faire, j'aime mieux pouvoir le faire ici plutôt qu'ailleurs.

Bref, je ne sais pas s'il y a beaucoup d'utilisateur(rice)s de XSLT ici, mais s'il y en a quelques-un(e)s, alors je veux qu'on ouvre un p'tit club, et je veux bien participer à répondre aux questions sur le sujet (autres que les miennes lol)... mais pour l'instant, c'est moi qui a un big problème :D

Bon, j'y va ....

Je me demande si des gens connaissent un moyen simple et directe de tester si une chaîne de caractères est un chemin XML valide, dans le contexte d'un traitement XSLT.

Je prend un exemple : un élément a un attribut, disont "name", et cet attribut name, peut prendre soit une valeur chaîne, soit un chemin XML, et selon le cas, le traitement effectué par la feuille XSLT devrait être différent.

Je prend un exemple concrêt, pour être plus clair, et tout autant pour donner un exemple de cas où cela peut être utile.

Soit le fragment suivant :
Code: Tout sélectionner
<chapter id="thisone">
    <icon name="thisone"/>
</chapter>


On voit que deux attributs sont identiques. Je voudrais que dans ces cas là, pour éviter les erreurs, je puisse explicitement dire dans la source que l'attribut "name" de l'élément "icon", c'est la valeur de l'attibut "id" de l'élément "chapitre" dans lequel il se trouve (je dis bien, dans le source XML, pas dans le XSLT).

Et donc j'aimerais écrire quelque chose comme
Code: Tout sélectionner
<chapter id="thisone">
    <icon name="../@id"/>
</chapter>


Et dans le cas où l'attribut serait un chemin, alors la feuille XSLT s'en servirait pour aller repécher la valeur à la source ainsi désignée, plutôt que d'utiliser la valeur de l'attribut tel-quel (comme on le fait normalement).

Est-ce que vous voyez ce que je veux dire ?

Mais pour que cela fonctionne, il faudrait que la feuille XSLT puisse savoir si la chaîne n'est qu'une chaîne ou si elle est un chemin XML (comme un chemin XML est aussi une chaîne de caractère, dans le cas de cet exemple, on supposera que un "id" ou un "name" ne doivent jamais être ambigüs dans ce contexte, et donc par exemple ne jamais avoir comme valeure le nom d'un élément du document).

Est-ce qu'il existe un prédicat XSLT qui permet de tester si une chaîne est un chemin XML valide ? Sans faire planter le traitement ?

Je pourrais le faire en utilisant deux attributs différents, et tester la présence de l'un ou l'autre attribut (par exemple faire que l'élément "icon" puisse avoir soit un attribut "name", soit un attribut "name-source", par exemple). Mais je préfère, si c'est possible, le faire avec un seul attribut... d'où la question du teste.

Marci les gens :)

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités