Have you tried using an attribute value template (7.6.2) as follows?

<ext:field select="{...}" .../>

The curly braces are commonly used to evaluate XPath within attributes of 
literal result elements such as:

<img src="{...}"/>

Note that the expression is converted to string, just as with <xsl:value-of/>. 
If you want to use node sets or if you
need to evaluate the expression in a custom context, then using  attribute 
value template may not work.

-- Frank Weiss

Simon Kitching wrote:

>  Hi All,I am trying to implement an extension element like this:  <ext:field 
> select="..."  myattr1="..."
> myattr2="..."/>where the select should be able to contain anything that would 
> normally be validin an <xsl:value-of
> select="..."/> expression. I have got this mostly working, but my code fails 
> for this type of thing:<xsl:variable
> name="foo" select="'some value'"/><ext:field select="$foo"/>My code which 
> evaluates the specified select statement
> reports that the variable "foo" cannot be found, though XPath expressions are 
> evaluated correctly(as far as I can
> see). Variable "foo" is definitely in scope; replacing a call to myextension 
> with code like <xsl:value-of
> select="$foo"/> works fine.Within my extension element method, I use the 
> following code (mostly grabbedfrom the
> PipeDocument code):XPathContext xpContext = 
> procContext.getTransformer().getXPathContext();XPath dynamicXPath = new
> XPath(  selectStr,   xpContext.getSAXLocator(),  
> xpContext.getNamespaceContext(),  XPath.SELECT,
> procContext.getTransformer().getErrorListener());XObject xobj = 
> dynamicXPath.execute(  xpContext,
> procContext.getContextNode(), // I suspect this is the problem  
> xpContext.getNamespaceContext());Note that global
> variables can be accessed from the select expression, just not variables 
> declared in the same template as the
> extension element invocation.My suspicion (which may be wildly wrong) is that 
> the node returned by
> procContext.getContextNode()is the template node, not the <ext:field> node. 
> And of course any variables declaredwithin
> that node are therefore not in scope.Does anyone have any suggestions how to 
> deal with this?I cannot find any methods
> that would return the <ext:field> node itself, and am not surethat if I did 
> find one then xpath expressions might not
> be right if I used it. Note also thatthe select expression might be *any* 
> valid expression.On a related question, I am
> somewhat confused about what node getContextNode()is returning anyway :-)I am 
> assuming the following:* a DOM (or
> DOM-equivalent) has been built for the source xml document* a DTM tree of 
> "wrapper" nodes is built; each node has a
> reference back to the   underlying source document node. It is to this DTM 
> tree that any XSL variables are
> attached.* the getContextNode() method returns a reference to the DTM node 
> which wraps  the currently matched source
> document node.Could someone kindly correct me if I am off-beam here? Or maybe 
> refer me toan appropriate architectural
> document?Many thanks in advance,Simon

Reply via email to