
If it makes you feel any better, Wendell, I get the same output when I run this on itself in saxon[1] from the commandline. I get the expected whitespace node if I add <xsl:output method="xml" indent="yes"/> Notes ----- [1] Saxon-HE 9.6.0.2J
Given this stylesheet:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:variable name="mixed" as="element()"> <mixed>Here is mixed content, including
<one>children</one> <two>with nothing</two>
but whitespace between them.</mixed> </xsl:variable>
<xsl:template match="/"> <xsl:apply-templates select="$mixed"/> </xsl:template>
<xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template>
</xsl:stylesheet>
I run it on itself in oXygen, and get
<?xml version="1.0" encoding="UTF-8"?><mixed>Here is mixed content, including
<one>children</one><two>with nothing</two>
but whitespace between them.</mixed>
I would expect whitespace between the </one><two>.
What am I missing? Have things changed wrt whitespace-handling rules?
(As I see it, the temporary tree $mixed should contain a whitespace-only text node between the 'one' and 'two' elements.)
Thanks for any insights,