我试图保留我的xslt文档中的空格,我的代码是
var xslCompiledTransform = new XslCompiledTransform();
xslCompiledTransform.Load( @"SimpleSpacing.xslt" );
string result;
using ( XmlReader reader = XmlReader.Create( @"SimpleSpacing.xml" ) )
{
using ( var stringWriter = new StringWriter() )
{
using ( var htmlTextWriter = new SpawtzHtmlTextWriter( stringWriter ) )
{
xslCompiledTransform.Transform( reader, args, htmlTextWriter );
htmlTextWriter.Flush();
}
result = stringWriter.ToString();
}
}
Xslt文件
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="root">
<xsl:value-of select="FirstWord"/> <xsl:value-of select="SecondWord"/>
</xsl:template>
</xsl:stylesheet>
Xml文档
<root>
<FirstWord>Hello</FirstWord>
<SecondWord>World</SecondWord>
</root>
我的预期输出是“Hello World”,但我目前正在收到“HelloWorld”,非常感谢帮助。
答案 0 :(得分:1)
或者,您可以使用
<xsl:value-of select="concat(FirstWord, ' ', SecondWord)"/>
答案 1 :(得分:0)
一般的空白保存不是错误的。只是首先在输入XML中没有空白字符 - 而且在XSLT过程中你从未引入过任何空白字符。
空CDATA部分(<![CDATA[]]>
)不会在输出XML中产生空格。
将您的root
模板定义更改为:
<xsl:template match="root">
<xsl:value-of select="FirstWord"/>
<xsl:text> </xsl:text>
<xsl:value-of select="SecondWord"/>
</xsl:template>
修改强>:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<xsl:value-of select="FirstWord"/>
<xsl:text> </xsl:text>
<xsl:value-of select="SecondWord"/>
</xsl:template>
</xsl:stylesheet>
顺便说一下,保留空间是XSLT处理器采取的默认操作。所以,实际上你不必指定它。