[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
The second alternatives variable holds in fact a document node, according to
http://www.w3.org/TR/xslt20/#variable-values
If a variable-binding element has no select attribute and has non-empty content (that is, the variable-binding element has one or more child nodes), and has no as attribute, then the content of the variable-binding element specifies the supplied value. The content of the variable-binding element is a sequence constructor; a new document is constructed with a document node having as its children the sequence of nodes that results from evaluating the sequence constructor and then applying the rules given in 5.7.1
If you want to make it a topic element, you should explicitly declare the variable as such:
<xsl:variable name="containingChapter" as="element(topic)">
Gerrit
On 2012-12-21 00:24, Steve Fogel wrote:
Re: [xsl] Why do these xsl:variable declarations give different results?
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 |
The second alternatives variable holds in fact a document node, according to
http://www.w3.org/TR/xslt20/#variable-values
If a variable-binding element has no select attribute and has non-empty content (that is, the variable-binding element has one or more child nodes), and has no as attribute, then the content of the variable-binding element specifies the supplied value. The content of the variable-binding element is a sequence constructor; a new document is constructed with a document node having as its children the sequence of nodes that results from evaluating the sequence constructor and then applying the rules given in 5.7.1
If you want to make it a topic element, you should explicitly declare the variable as such:
<xsl:variable name="containingChapter" as="element(topic)">
Gerrit
On 2012-12-21 00:24, Steve Fogel wrote:
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 |
Keywords