2011-05-31 3 views

Répondre

0

fonctionne XSLT sur le modèle de données XML analysé (arbre XML). Le modèle de données XML ne fait aucune différence entre les éléments à fermeture automatique et les éléments vides avec des balises de début et de fin distinctes. Ils ne sont tous les deux que des éléments qui n'ont aucun noeud enfant (texte, élément, commentaire, etc.). Donc, dans la phase où le processeur XSLT l'obtient à la structure XML donnée, toute cette variation lexicale est déjà perdue.

La seule solution qui me vient à l'esprit est d'utiliser un analyseur qui a des extensions pour ajouter des données lexicales à l'arbre analysé. Cela pourrait être basé sur la modification de l'arbre en ajoutant de nouveaux éléments représentant différents événements lexicaux. Ensuite, votre code XSLT pourrait identifier les nœuds ajoutés par l'analyseur et traiter en conséquence.

Mais à la fin, si vous ne demandez pas ce juste parce qu'il vous intéresse, mais vous avez vraiment besoin de faire la distinction entre <node/> et <node></node> dans votre document XSLT, alors il y a probablement quelque chose de mal dans votre modèle toolchain/processus.

+0

"il y a probablement quelque chose qui ne va pas dans votre toolchain/modèle de processus" oui, vous avez raison. Je dois intégrer mon application avec une application héritée et je suis à la recherche du meilleur moyen. Donc, je vois que c'est mal. – kolchanov

0

Non, ni avec aucun processeur XML conforme.

(Sauf si vous avez des informations lexicales que vous pouvez utiliser pour en déduire quelle forme de balisage a été utilisé -. Localisateurs SAX peut-être)