[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Why do these xsl:variable declarations give different

Subject: Why do these xsl:variable declarations give different results?
From: Steve Fogel <STEVE.FOGEL@xxxxxxxxxx>
Date: Thu, 20 Dec 2012 15:24:10 -0800 (PST)
 Why do these xsl:variable declarations give different
Hi, all.

Would appreciate some help. I don't understand how these two definitions of a
variable produce different results. This is from the DITA Open Toolkit (OT).

1st alternate definition is without a condition:

<xsl:variable name="containingChapter"
     select="ancestor-or-self::*[contains(@class, ' topic/topic
')][position()=last()]"/>

2nd alternate definition is with a condition, which is me fixing a bug in the
(OT).

<xsl:variable name="containingChapter">
    <xsl:choose>
        <xsl:when test="$hasBookParts">  <!-- The book has <part>s -->
            <xsl:copy-of select="ancestor-or-self::*[contains(@class, '
topic/topic ')][last()-1]"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:copy-of select="ancestor-or-self::*[contains(@class, '
topic/topic ')][last()]"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable>


Both definitions should return a <topic> element with an id attribute.
Following the definition is this statement:

<xsl:variable name="id" select="$containingChapter/@id"/>

With the first definition, the value of id is a string, as desired. With the
2nd, it's empty. Bad. Why?

For the 1st definition, the Oxygen debugger gives the value type as
"element(1)". For the 2nd, it gives the value type as "document-node(1)".  In
fact, if you look at the value of the variable in Oxygen's Nodes/Values Set
window, for the 1st definition it is:

topic

and for the 2nd, it is:

#document/fragment
   topic

Can someone please advise?

Many thanks!

Steve

Steve Fogel | Information Architect, Oracle Database | 650.506.4914
Oracle Server Technologies Information Development
500 Oracle Parkway | M/S 4op1126 | Redwood Shores, CA 94065

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.