2010-04-20 4 views
2

J'utilise XsltArgumentList.AddExtensionObject avec succès. Le problème est quand j'appelle les fonctions du xslt, elles obtiennent seulement les arguments que je passe. Comment puis-je obtenir le contexte (quel nœud est en cours de traitement).Objets d'extension Xslt - Obtention de contexte

J'utilise XslTransform.Transform (myXPathDoc, xslArgs, myWriter); pour commencer la transformation ..

J'ai entendu parler SetContext et RegisterCustomFunction mais ils semblent seulement travailler sur des objets XPathExpression ...

Merci

+0

S'il vous plaît poster le XSLT et la fonction d'extension, afin que nous puissions voir ce que vous faites. – Oded

Répondre

0

Il n'y a pas documenté manière pour une fonction d'extension d'accéder implicitement au nœud de contexte.

passe comme paramètre.

Par exemple:

<xsl:value-of select="extFn:MyExtensionFunction(.,'A',./code,./date)"/>

Vous devez modifier le code de la fonction d'extension: ajouter un nouveau paramètre, qui doit être le premier dans l'ordre, et il est par ce nouveau paramètre que la fonction d'extension obtient le noeud courant.

+0

Dang. Comment puis-je le passer en paramètre? j'ai

+0

@ Joãozinho-das-Couves: Voir la solution mise à jour par exemple. :) –

+0

bien presque, ce que je voulais réellement n'était pas le nœud de données, mais le nœud de contexte xslt réelle. À la fin ce que je veux est quand il y a une exception lancée par ma fonction je veux dire quel noeud xslt a provoqué l'exception (ma fonction est utilisée comme 10 fois dans un xslt et selon les paramètres il peut jeter une exception) –

Questions connexes