Subject: Re: [xsl] Why do these xsl:variable declarations give different results? From: "Imsieke, Gerrit, le-tex" <gerrit.imsieke@xxxxxxxxx> Date: Fri, 21 Dec 2012 00:32:21 +0100 |
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
-- Gerrit Imsieke Geschdftsf|hrer / Managing Director le-tex publishing services GmbH Weissenfelser Str. 84, 04229 Leipzig, Germany Phone +49 341 355356 110, Fax +49 341 355356 510 gerrit.imsieke@xxxxxxxxx, http://www.le-tex.de
Registergericht / Commercial Register: Amtsgericht Leipzig Registernummer / Registration Number: HRB 24930
Geschdftsf|hrer: Gerrit Imsieke, Svea Jelonek, Thomas Schmidt, Dr. Reinhard Vvckler
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Why do these xsl:variable dec, Steve Fogel | Thread | Re: [xsl] Why do these xsl:variable, Michael Kay |
[xsl] Why do these xsl:variable dec, Steve Fogel | Date | Re: [xsl] Why do these xsl:variable, Michael Kay |
Month |