[XSLT]copie partielle avec condition sur les axes
Bonjour,
Je tente de simplifier un fichier xml via une feuille xsl de la manière suivante:
En connaissant un noeud de mon arborescence, j'aimerai obtenir une nouvelle arborescence constituée de l'ascendance directe (que les parents, grands parents... racine), la fratrie , et la première génération suivante
Pour schématiser, on va dire que je pars de cette arborescence (en rouge le noeud que je connais et qui doit servir de "carrefour")
Code:
1 2 3 4 5 6 7 8 9 10 11
| ROOT
├─E1
├─E2
│ ├─E21
│ ├─E22
│ │ ├─E221
│ │ │ └─E2211
│ │ └─E222
│ └─E23
│ └─E231
└─E3 |
Le résultat que je souhaite obtenir est le suivant:
Code:
1 2 3 4 5 6 7
| ROOT
└─E2
├─E21
├─E22
│ ├─E221
│ └─E222
└─E23 |
Je connais le noeud carrefour grace a la valeur d'un de ses attributs que je transmets à mon xsl
Code:
1 2 3
|
<xsl:param name="req" />
<xsl:variable name="vreq" select="//*[@name = $req]" /> |
Je peux ainsi démarrer de mon noeud carrefour de la manière suivante:
Code:
1 2 3 4
|
<xsl:template match="/" >
<xsl:apply-templates select="$vreq" />
</xsl:template> |
Si je fais comme ca, je ne sais pas comment faire pour remonter à la racine puis copier partiellement le xml en redescendant en ligne droite vers mon noeud carrefour...
Je pense qu'une meilleure facon de faire serait de partir de la racine et de copier tous les noeuds qui répondent à une des conditions suivantes:
- ce noeud est un ancêtre du noeud carrefour
- ce noeud appartient à la fratrie du noeud carrefour
- ce noeud est le noeud courant
- ce noeud est un fils du noeud carrefour
Cependant, je n'arrive pas à exprimer ces conditions à partir de ma variable...
Et je n'arrive pas à saisir si cette expression doit apparaitre dans un test ou dans un select... (ni si cette question est pertinente...)
J'aurais souhaité avoir votre avis sur la facon d'aborder le problème sachant que mes données initiales sont le xml (bien sur) et la valeur de l'attribut qui me permet de définir de manière unique mon noeud carrefour.
Merci d'avance pour vos commentaires