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
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
- XSLT Help and Discussion (7625)
-> + Use of before and after string (3) Sticky Topic
-> - How do I substitute element ty... (1)
-> + How does one add working days ... (4)
-> - Help, I have existing XLT and... (1)
-> + Need help on XSLT issue - (2)
-> + EDI to XML Conversion (7)
-> - XML To JSON Conversion using X... (1)
-> + Formatting Paragraphs to same ... (2)
-> - Grouping of records (1)
-> + Problems with xsd 1.1 (4)
-> + XML to HL7 mapping (3)
-> + XSLT 3 and Iterate (2)
-> + XSL-FO to PDF preview (3)
-> + java.lang.RuntimeException: Er... (2)
-> + Create Acroforms with Stylus X... (2)
-> + How to change XSLT parameter s... (3)
-> + how to change format of the da... (2)
-> + Search "Next 8 Results " doesn... (2)
-> - Support for Git (1)
-> + newbee (8)
-- [1-20] [21-40] [41-60] Next
+ XQuery Help and Discussion (2016)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
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

   
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.