Bonjour,
Je souhaiterais avoir un éclairage sur la manière d'obtenir la valeur d'un attribut d'un élément parent.
Par exemple dans ce type de noeud dans le fichier xml source (tronqué pour l'exemple):
Je souhaite récupérer la valeur de l'attribut "id" de l'élément <c> parent de l'élément <subject>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <c id="de-684" level="file"> <did/> <scopecontent/> <accessrestrict/> <controlaccess> <subject>mathématiques</subject> </controlaccess> </c>
Voici ma dernière tentative (seulement la partie concernée):
Dans le résultat, la valeur l'attribut "source" est vide, alors que celle voulue dans l'attribut "target" est bien présente. J'ai fait plusieurs tests mais je ne parviens pas à trouver le bon chemin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <xsl:template match="//c[contains(@id, 'de')]//controlaccess | //c[contains(@id, 'pa')]//controlaccess" mode="create-edges"> <xsl:for-each select="subject"> <xsl:element name="edge"> <xsl:attribute name="id"> <xsl:value-of select="generate-id()"/> </xsl:attribute> <xsl:attribute name="source"> <xsl:value-of select="parent::c/@id"/> </xsl:attribute> <xsl:attribute name="target"> <xsl:value-of select="."/> </xsl:attribute> </xsl:element> </xsl:for-each> </xsl:template>
Auriez-vous un suggestion? Peut-être dois-je m'y prendre autrement?
Par avance merci
Partager