Chemin vers la valeur de l'attribut d'un élément parent
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:
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:
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