[Bug 29458] [xslt30ts] seqtor-027

https://www.w3.org/Bugs/Public/show_bug.cgi?id=29458

--- Comment #5 from Michael Kay <mike@saxonica.com> ---
Sorry for the confusion.

The expected results for both tests end in 

x y z { | } ~

The actual results I am getting for both tests ends in

x y z { | }~

that is, without any space between the last two printable characters.

The recursive function is:

    <xsl:function name="f:create" as="item()+">
        <xsl:param name="i" as="xs:integer" />
        <xsl:text expand-text="yes">{if($i = 0) then 'end' 
            else f:create($i - 1)}</xsl:text>
        <xsl:sequence select="codepoints-to-string($i + 65)" />
    </xsl:function>

If we consider the first three calls, (X) the call create(61) returns
(text(create(60)), &#126;); the call create(60) returns (text(create(59)),
&#125;), and the call create(59) returns (text('....'), &#124;) where "...." is
the result of further calls. Combining these results we have

So create(59) returns a text node('....') followed by a string("|").

text(create(59)) combines these using CSC to a text node ('.... |')

So create(60) returns a text node ('.... |') followed by a string("}")

text(create(60)) combines these using CSC to a text node ('.... | }')

create(61) returns this text node followed by the string "~".

These two items form part of the result of the initial template. They are
combined using CSC. The CSC rules do not insert a space between a text node and
a string, and therefore in the final result there should be no space preceding
the final tilde.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Wednesday, 9 March 2016 15:22:19 UTC