[xsl] losing significant whitespace-only text nodes in mixed content

Subject: [xsl] losing significant whitespace-only text nodes in mixed content
From: <triangle@xxxxxxxxxxxx>
Date: Thu, 15 Sep 2005 11:44:19 +0100
Dear all,
This is my first post: I've checked Dave Pawson's really useful FAQ, and tested some
of the theories here, plus I've checked the archive, but I can't find an example of
mixed content where there is only whitespace between two child elements within the
mixed content, so I'm resorting to posting to the list.

This is a simplified version of my input:
<paragraph> Some text, <xref>Section 8</xref> <bold>must</bold> be captured.</paragraph>

My problem is preserving the space between </xref> and <bold>.

I need to flatten the hierarchy within my mixed content as the notion of mixed
content does not exist in the destination (XML) app, so by wrapping each text() node
in an arbitrary <atom> tag I create:
  <atom>Some text, </atom>
  <xref>Section 8</xref>
  <atom> be captured.</atom>

My problem is that I've lost a significant whitespace character because it is the
only content that appears between the <xref> and the <bold> elements. When this
renders I am left with "Section8must". I should pass through:

  <atom>Some text, </atom>
  <xref>Section 8</xref>
  <atom> </atom> <!-- maybe I need to translate this space to an character entity too -->
  <atom> be captured.</atom>

I have over-simplified this, but I've tried <xsl:preserve-space> but that preserves
leading and trailing spaces and converts CRs into whitespace, and "normalize-space()"
removes the leading space in " be captured", as well as not preserving my significant
whitespace either.

Does anyone have any ideas please?

Thanks in advance

Sent with "Me-Mail", Boltblue's FREE mobile messaging service.

Current Thread