[XPATH] Gros soucis de template...
bonjour,
j ecris un xsl permettant de recopier les élément étant dans un doc un pas dans un autre, on reconnait ces élément grave à leur attribut id et leur position relative au noeud root...
le problème est que pour les éléments nouveaux, c est simple je les compare avec ceux contenu dans un autre doc...
le probleme vient des élément à supprimer à savoir comparer ceux de l autre doc avec ceux du doc courant... voici le probleme
Code:
1 2 3 4 5 6 7
| <xsl:template name="aretirer">
<xsl:for-each select="document('REF.xml')//*[parent::root and *[1][not(@id=.//*[parent::root]/*[1]/@id) ]]">
<xsl:element name="aretirer">
<xsl:copy-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:template> |
j ai l impression qu au moment ou j ecris
.//*[parent::root]/*[1]/@id je perd le contexte du doc courant qui devient...l autre doc
j ai réglé le problème en écrivant ce qui suit
directement sous <xsl:stylesheet/>
Code:
<xsl:variable name="currentDoc" select="/"/>
puis
Code:
1 2 3 4 5 6 7 8
|
<xsl:template name="aretirer">
<xsl:for-each select="document('REF.xml')//*[parent::root and *[1][not(@id=$currentDoc//*[parent::root]/*[1]/@id) ]]">
<xsl:element name="aretirer">
<xsl:copy-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:template> |
alors voila ma question:
comment refaire référence au doc courant sans passer par cette variable??
Merci :roll: :roll: :oops: