XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
hardik mehtaSubject: Complex condition in Predicate
Author: hardik mehta
Date: 24 Nov 2005 10:13 AM
Hi all,

yesterday my problem was solves with clyde's help..now in the same xslt file, i m stuck in a new prob.

to be more precise i write here the xml file:

<some-nodes>

<node-of-interest>
<sub1>val1</sub1>
<sub2>val2</sub2>
</node-of-interest>

<node-of-interest>
<sub1>val1</sub1>
<sub2>val2</sub2>
</node-of-interest>

<node-of-interest>
<sub1>val1</sub1>
<sub2>val2</sub2>
</node-of-interest>


........
</some-nodes>

now i want to take the nodes in variable

<xsl:variable name="nodes" select="some-nodes/node-of-interest[sub1 < test1 and sub2 < test2]" />

this failed so I did as following....

<xsl:variable name="allNodes" select="some-nodes/node-of-interest[sub1 < test1 and sub2 < test2]" />

and after that...

<xsl:variable name="nodes" select="$allNodes[sub2 > test2]" />


can't i do this ? i feel it is absolutely legal but the parser xalan tells something like this...

Cannot convert #RTREEFRAG to a NodeList!

any suggestion will be helpful...

Hardik.

Postnext
(Deleted User) Subject: Complex condition in Predicate
Author: (Deleted User)
Date: 24 Nov 2005 10:41 PM
Hardik,

Firstly, when using [val1 < val2] in a select= use [val1 &lt; val2]. Your complex select should work properly if you use &lt; with and:
[val1 &lt; val2 and val3 &lt; val4]

Clyde

Postnext
hardik mehtaSubject: Complex condition in Predicate
Author: hardik mehta
Date: 25 Nov 2005 03:07 AM
Hi Clyde,

yes, u are right the complex condition alone wored but in my case i had that condition in an xsl:choose e.g.

<xsl:variable name="nodes" >
<xsl:choose>
<xsl:when test="$variable = 'true'">
<xsl:value-of select="some-nodes/node-of-interest[sub1 = 'test1']
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="some-nodes/node-of-interest[sub1 = 'test1' and sub2 = 'test2']
</xsl:otherwise>
</xsl:choose>


this didnt work and gave the above mentioned error.

i found some strange solution of it passing test2 as a variable and avoiding <xsl:choose> but this is not an elegant solution i think.


is there any other way ?


Hardik

Postnext
(Deleted User) Subject: Complex condition in Predicate
Author: (Deleted User)
Date: 25 Nov 2005 06:31 AM
Hardik,

If you assign a nodeset to a variable with
<xsl:variable name="a" select="...."/>
then the XSLT processor understands that the variable contains a nodeset and allows you to use it as a nodeset in a later XPATH expression.

On the other hand, if you assigne a nodeset to a variable like this:
<xsl:variable name=x">
blah blah
</xsl:variable>
then some processors won't recognize that the variable contains a nodeset and will give various error messages. The fix is processor dependent. See this thread for more info.
http://www.stylusstudio.com/SSDN/default.asp?action=9&read=4442&fid=48
In your case, I would try something which puts everything into 1 predicate:
<xsl:variable name="node" select="[some-nodes/node-of-interest[sub1 = 'test1' and ( $variable = "true" or sub2 = 'test2')]"/>

Clyde

Postnext
hardik mehtaSubject: Complex condition in Predicate
Author: hardik mehta
Date: 28 Nov 2005 04:27 AM
Hi Clyde,

thanks for ur help.

I did not know this and could not even guess !

I am using xalan under linux to parse the xslt and fop to convert resulting xsl:fo file into pdf.

i will search for something similar to msxsl:node-set() in xalan..for future reference.


thanks.
Hardik

Posttop
(Deleted User) Subject: Complex condition in Predicate
Author: (Deleted User)
Date: 28 Nov 2005 10:20 AM
Hardik,

When using xalan, you can try this. The namespace declaration is:
xmlns:xalan="http://xml.apache.org/xalan
And the nodeset function would be
xalan:nodeset($varname)

Clyde

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.