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)
-> - UV Kit (1)
-> - Preview PDF as HTML? (1)
-> + ArrayIndexOutOfBoundsException... (3)
-> + WSCC to KML transform help (5)
-> + Using XSV 3.1-1 as an external... (2)
-> + Cannot debug stylesheet (2)
-> + Error installing Stylus Studio... (3)
-> - Windows XP "not responding" er... (1)
-> - Windows XP "not responding" er... (1)
-> + HTML to XSL (2)
-> + Run Stylus studio from command... (2)
-> + Setting Context for XPath Quer... (5)
-> + Batch process to check well-fo... (9)
-> + WSDL validator? (8)
-> - How to be still using Old Jars (1)
-> - Install Stylus Studio on anoth... (1)
-> + Install Stylus Studio on anoth... (3)
-> + How to validate via catalog lo... (4)
-> + New Installation Upgrade Issue... (4)
-> - Freelance Project - Mapping di... (1)
-> + Converting from Edifact to SQL... (3)
-> + converting data file to xml us... (2)
-> + have serious problem with Styl... (2)
-> + ddtek:sql-delete (3)
-> + Web Service Call with Axis: No... (3)
-> + Entity gets replaced when inde... (2)
-> + EDIFACT import error (3)
-> + (401) forbidden error (8)
-> + Error when data type not speci... (2)
-> - Globally delete duplicates of ... (1)
-> + Validation too slow!!!! (4)
-> + Define a complex type with mul... (2)
-> + XML Playlists (2)
-> - Create SOA Web Service with me... (1)
-> + Spell checking?? (2)
-> - saxon 9 linebreak in text mode (1)
-> + Apache FOP gets NoClassDefFoun... (3)
-> + Nillable Decimal (4)
-> + Transform XML to AS400 Databas... (4)
-> + xs3p vs xsDoc (3)
-> + Update Installation Problem (11)
-> + Java Heap error and -Xmx param (5)
-> + 2007 Pro won't run XSL files c... (3)
-> + access to multiples databases ... (6)
-> + License Authentication Failed (2)
-> + XSLT Mapper: How to aggregate ... (2)
-> + Why my WYSIWYG tab disappeared... (3)
-> + Flat File (From mainframe COBO... (9)
-> + X12 Validation (5)
-> + Schema replacement in Microsof... (2)
-> + [OT] XML fragment - error expl... (3)
-> + Re-using a simple type definit... (2)
-> + What is "Java bult-in" XSLT Pr... (2)
-> + Error when generating .NET cod... (6)
-> + options for sum(function) - to... (2)
-> + [OT] XSD - is this valid XML o... (2)
-> + Multiple page sequences (2)
-> + License disabled (3)
-> + EDIFACT to XML with multiple Q... (5)
-> + Viewing Web Service Call http ... (2)
-> - keyref handling by different p... (1)
-> + Running transform in SS UI com... (9)
-> + Mapping from one schema to ano... (3)
-> - Using document() to lookup fro... (1)
-> + Can not open a xml file in IE ... (2)
-> + Stylus Studio detected a chang... (3)
-> + Customer Support for Stylus St... (2)
-> + WebService Call is not working... (3)
-> + Activation Problem (2)
-> + Activating Stylus Studio 2008 (3)
-> + Cannot use UNC paths, get save... (22)
-> + DB to XML Data Source not avai... (3)
-> + Stylus Studio 2008 Installatio... (16)
-> - SQL Server 2005 xml datatype -... (1)
-> + XML Reporting: linking to sect... (4)
-> + Merge an external xml with inp... (4)
-> + Stylus Closing abruptly (4)
-> + Best approach for generating X... (2)
-> + Problem with Java call (5)
-> + Changing the top margin (2)
-> + Generating a Web Service Call (2)
-> + import xml into excel using V... (2)
-> + FOP producing NoSuchMethodErro... (6)
-> + Reporting Errors (2)
-> + Doc/Literal Wrapped (2)
-> + Need image to render at higher... (3)
-> + HTML to xml wizard on thousand... (2)
-> + Doc/Literal and SOAP Header/Bo... (2)
-> - Help with settping up MS Acces... (1)
-> + WSDL - A Well Defined Service (7)
-> + XML to XML Mapping - Combining... (2)
-> + CData Question (3)
-> + mySQL DB Connection (11)
-> + XPath documentation confusion (2)
-> + Extra block/CR generated (6)
-> + Apache FOP (2)
-> + Inserting Java Script (2)
-> + Convert EDIFACT to X12 or vice... (6)
-> + XSD: Restricting an attribute ... (2)
-> + Creating dynamically named ele... (2)
-- Previous [1201-1220] [1221-1240] [1241-1260] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Lee HumphriesSubject: Bug in xsl:choose?
Author: Lee Humphries
Date: 09 Jul 2002 03:28 AM
I've been finding lately that some of my more complex xsl:choose statements are not getting processed properly - The xsl:otherwise clause is not being invoked when it should.

For example I have the following nasty string-handling xsl:choose to determine whether I need to output some text that:
1. either falls between an end delimiter and start delimiter, or
2. after the last end delimiter.
However, when I execute it using the SS4 processor, Xalan-J or MSXML (all through SS) not one of the xsl:choose options gets selected - including the xsl:otherwise! If I run it through the debugger for the SS4 or Xalan-J processor I can see it skip completely over the xsl:choose

Any ideas?















Postnext
Lee HumphriesSubject: Bug in xsl:choose?
Author: Lee Humphries
Date: 09 Jul 2002 03:30 AM

 
  
  
   
  
  
   
  
  
   
  
 

Postnext
Lee HumphriesSubject: Bug in xsl:choose?
Author: Lee Humphries
Date: 09 Jul 2002 03:31 AM
If you want to see the XSLT you'll need to select view source (or something similar) from your browser.

Postnext
Minollo I.Subject: Re: Bug in xsl:choose?
Author: Minollo I.
Date: 09 Jul 2002 10:31 AM
My best guess is that as you have an empty branch (the first
{xsl:when...}), that's the one which is being fired; but being empty, it's
skipped altogether.

Minollo

Postnext
Lee HumphriesSubject: Re: Bug in xsl:choose?
Author: Lee Humphries
Date: 09 Jul 2002 07:31 PM
Nup - not that one. The empty branch is very plainly skipped over. If I go and put something into the empty branch, it never makes it into the output. The empty branch is only there to eliminate that particular condition.

To check it out try the following:
$TokenSource is just an escaped closing tag e.g. </EndBlock>
$StartDelim is most of an escaped opening tag e.g. <SubBlock
$EndDelim is the corresponding escaped closing tag e.g. </SubBlock>

What should happen is that $TokenSource will get output.

Postnext
Lee HumphriesSubject: Re: Bug in xsl:choose?
Author: Lee Humphries
Date: 09 Jul 2002 07:46 PM
I decided to try and make things a little simpler and changed the XSLT to the following:
<xsl:if test="string-length($EndDelim) > 0">
<xsl:variable name="SubATest" select="substring-after($TokenSource, $EndDelim)"/>
<xsl:variable name="SubBTest" select="substring-before($SubATest, $StartDelim)"/>
<xsl:choose>
<xsl:when test="string-length($SubBTest) = 0">
</xsl:when>
<xsl:when test="string-length($SubBTest) > 0">
<xsl:value-of disable-output-escaping="yes" select="$SubBTest"/>
</xsl:when>
<xsl:when test="string-length($SubATest) > 0 and string-length($StartDelim) > 0">
<xsl:value-of disable-output-escaping="yes" select="$SubATest"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="$TokenSource"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>

Now the first branch is very definitely getting executed (whereas it wasn't before) changing the first branch test to:
"string-length($SubBTest) = 0 and contains($TokenSource, $EndDelim)"
Got the desired results.

Any ideas as to why there was the difference in behaviour (apart from the fact that I should simplify my code more)?

Posttop
Hans-Peter KüchlerSubject: Re: Bug in xsl:choose?
Author: Hans-Peter Küchler
Date: 10 Jul 2002 04:49 AM
Hi, Lee Humphries wrote:
> To check it out try the following:
> $TokenSource is just an escaped closing tag e.g. </EndBlock>
> $StartDelim is most of an escaped opening tag e.g. <SubBlock
> $EndDelim is the corresponding escaped closing tag e.g. </SubBlock>

> What should happen is that $TokenSource will get output.

That's not true. Look at the example:

<xsl:template match="/">
<xsl:variable name="StartDelim" select="'<SubBlock'"/>
<xsl:variable name="EndDelim" select="'</SubBlock>'"/>
<xsl:variable name="TokenSource" select="'</EndBlock>'"/>
<xsl:if test="string-length($EndDelim) > 0">
<xsl:choose>
<xsl:when test="string-length(substring-before(substring-after($TokenSource, $EndDelim), $StartDelim)) = 0">first</xsl:when>
<xsl:when test="string-length(substring-before(substring-after($TokenSource, $EndDelim), $StartDelim)) > 0">second</xsl:when>
<xsl:when test="string-length(substring-after($TokenSource, $EndDelim)) > 0 and string-length($StartDelim) > 0">third</xsl:when>
<xsl:otherwise>otherwise</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>

The test conditions are the same as in the first (not seen) example. The output of this fragment is:
first

Remember, that substring-before() and substring-after() returns the empty string if the first argument string does not contain the second argument string. So the first test condition is almost true!

regards, Hans-Peter Küchler

   
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.