2009-11-24 8 views
0

j'ai le code XML suivant et je vous écris un XSLT pour transformer:Transformation XSLT avec une allumette

<callop> 
    <con>unit</con> 
    <var>u</var> 
    <var>v</var> 
</callop> 

Le problème est que si <callop> est à l'intérieur <is> alors il devrait être un élément <nano> et <con> devient <Fun> mais sinon, il s'agit d'un <Atom> et <con> devient <Rel>.

Comment est-ce possible? Dois-je aller voir quel est le nœud parent?

Répondre

3

Vous pouvez gérer cela assez facilement en spécifiant simplement vos modèles avec le chemin complet. La correspondance de modèle plus spécifique aura la priorité, il ne devrait donc pas y avoir de problèmes.

<xsl:template match="is/callop"> 
    <nano> 
    ... 
... 

<xsl:template match="callop"> 
    <Atom> 
    ... 
... 
+0

Qu'en est-il du « » élément intérieur « » ce qui se passe à ce sujet? – user200210

+0

Vous pouvez déclarer un modèle séparé "is/callop/con" pour le faire correspondre et utiliser apply-templates du modèle "is/callop", ou simplement le gérer en ligne, par exemple:

+0

Merci. Cela fonctionne bien maintenant. – user200210

Questions connexes