I'm inserting some XML data to an XML column in SQL server but after the data has been inserted it has been changed by sql server.
Here is the data I insert
<xsl:value-of select="name/n/given" />
<xsl:text> </xsl:text>
<xsl:value-of select="name/n/family" />
When I read it back, it looks like this
<xsl:value-of select="name/n/given" />
<xsl:text />
<xsl:value-of select="name/n/family" />
Pay attention to the second line. This is a problem because it changes how the XSLT transformation output will be. The first example will create a space between given and family name, while the second will not create any space, so it will be like JohnJohnsen, while the first one will be like John Johnsen.
Is there some way to solve this?
Best Answer
You can use
xml:space = "preserve"
on the nodes where you want to keep the space. Using xml:space is "only a signal of intent" but SQL server is kind to us here.For one node
Result:
Entire document:
Result:
Another options for the entire document is to use convert with style 1.