Subject: Re: [xsl] A beef with XSLT Sometimes too complicated From: David Carlisle <davidc@xxxxxxxxx> Date: Mon, 17 Jul 2006 22:36:08 +0100 |
> So -- if I follow you -- nesting a for expression is a workaround for > this gap only some of the time? nesting the for never helps, you can use one for if the sequnce being bound to the variable has exactly one item let $x :=1 return ... can be written in xpath as for $x in 1 return .. but there is _no_ way in XPath to bind a value to a variable x such that count($x) has any value other than 1. so let $x := () return ... and let $x := (1,2) return ... have no analogue in XPath. When XPath is used in XSLT it's only a minor inconvenience, you just drop back into xslt and use <xsl:variable name="x" select="()"/> <xsl:variable name="x" select="(1,2)"/> It might be more of a "problem" in oher XPath API, although less of a problem than those API for XPath1, which don't let you bind variables at all, as XPath1 has no binding expressions. > In line with the question whether to prefer XPath or XSLT logic, can > we see an example where we'd actually prefer to do it in XPath if we > could? (I'd welcome entries from anyone.) So if thinking about this "the xpath way" it's probably not much of a problem, but increasingly when looking for xpath solutions you're going to be lead by somone or some search engine to xquery solutions. The fact that often you can get an xpath solution from an xquery solution by replacing any let by for means that people will try that, but it's only safe to do if you know the cardinality of the expression being bound is always 1 (which you are unlikely to know if it's just some code found on the web) I feel a faq coming on in this area... David
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] A beef with XSLT Sometime, Michael Kay | Thread | Re: [xsl] A beef with XSLT Sometime, Wendell Piez |
Re: [xsl] Use document() function t, G. Ken Holman | Date | Re: [xsl] Use document() function t, David Carlisle |
Month |