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):
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>
Je souhaite récupérer la valeur de l'attribut "id" de l'élément <c> parent de l'élément <subject>.

Voici ma dernière tentative (seulement la partie concernée):

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>
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.
Auriez-vous un suggestion? Peut-être dois-je m'y prendre autrement?

Par avance merci