Subject: Re: [xsl] Converting a string to a node and changing the scope From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 12 Jun 2002 14:51:32 +0100 |
Hi James, > 1) I am passing a string as a parameter into a template. Can I treat > the string as if it were a reference to a node. Not in standard XSLT/XPath. Many processors have extensions that enable you to evaluate a string as an XPath expression, however. For example saxon:evaluate() or dyn:evaluate() from EXSLT: <xsl:value-of select="dyn:evaluate($mystring)" /> Have a look at your processor documentation to work out whether your processor supports something like this; even if it doesn't, you might be able to write one of your own using DOM methods. > 2) I realise that xsl:for-each will change the current scope. > However, if I wanted to call a template, but in a different scope, > is there a proper way of changing the scope? You could wrap the call to the template within a xsl:for-each, I suppose. However, usually when the current node matters to a template, I make it a matching template rather than a named template, with a mode to distinguish it from other templates, and then apply templates to the node that I want to process. Or you could pass the node as a parameter if you prefer. For example, rather than: <xsl:for-each select="somenode"> <xsl:call-template name="sometemplate" /> </xsl:for-each> you could do: <xsl:apply-templates select="somenode" mode="sometemplate" /> or: <xsl:call-template name="sometemplate"> <xsl:with-param name="node" select="somenode" /> </xsl:call-template> Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Converting a string to a node, James Shaw | Thread | RE: [xsl] Converting a string to a , Michael Kay |
[xsl] node() as pattern, DPawson | Date | Re: [xsl] node() as pattern, Jeni Tennison |
Month |