views:

202

answers:

5

I'm making a header in my XSL code that includes multiple fields of information, i.e. "Name: Bob Birthdate: January 1 1900," etc. I enclosed them in tags as such:

<xsl:text>    Gender: Male    </xsl:text> 

But on the page, the whitespace around Gender/Male is being ignored. Is there something I'm missing?

Thanks in advance.

+1  A: 

You need to add &nbsp; instead of spaces. To get more than 1 space

<xsl:text><![CDATA[&nbsp;&nbsp;&nbsp; Gender: Male &nbsp;&nbsp;&nbsp;]]></xsl:text>

webdestroya
+4  A: 

If you want to output a text file you should specify an <xsl:output method="text"/> as a child of the <xsl:stylesheet> element.

When treating output as HTML the parser might pack your spaces, if HTML output with non-breaking spaces is what you want you can use the &#160; non-breaking space entity (note that &nbsp; might not work since it's not an XML entity, unless you declare it yourself).

baol
Declare it like this...<!DOCTYPE stylesheet [ <!ENTITY nbsp " " >]>
dacracot
That worked perfectly, thank you!
danielle
+2  A: 

This not a strict XSLT question, as XSLT does not eat your white space. This transformation

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <foo>
      <xsl:text>    Gender: Male    </xsl:text>
    </foo>
  </xsl:template>
</xsl:stylesheet> 

gives

<?xml version="1.0" encoding="UTF-8"?>
<foo>    Gender: Male    </foo>

You are using HTML as the output? Then use non breaking space for whitespace.

Patrick
+1  A: 

You may need the to use...

<xsl:text xml:space="preserve">    Gender: Male    </xsl:text>
dacracot
A: 

Just use

  &#160;Gender: Male&#160; 

it represent whitespace in xsl like

 &nbsp;Gender:Male&nbsp; 

in html

Pramodh