C# Xsl转换可在两个对象之间节省空间<;xsl:select的值';s

C# Xsl转换可在两个对象之间节省空间<;xsl:select的值';s,c#,xml,xslt,C#,Xml,Xslt,我的xsl文件中有以下行: network <xsl:value-of select="/config/areas/inside/network"/>&#32;<xsl:value-of select="/config/areas/inside/subnetmask"/> 对于不推荐使用的版本,一切正常(在我将ASCII代码放在两个元素之间的空格之后),但是XslCompiledTransform类中有一些其他规范化算法,我不知道如何避免这种行为 有什么建

我的xsl文件中有以下行:

   network <xsl:value-of select="/config/areas/inside/network"/>&#32;<xsl:value-of select="/config/areas/inside/subnetmask"/>
对于不推荐使用的版本,一切正常(在我将ASCII代码放在两个元素之间的空格之后),但是XslCompiledTransform类中有一些其他规范化算法,我不知道如何避免这种行为


有什么建议吗?

好的,你的问题是当你把
&32
在XML文档中,这在技术上与输入普通空间没有什么不同,因此XML解析器将其视为空白

我建议将该行改为

通过像这样将空格封装在concat函数中,它不会单独作为节点存在于XML文档中,也不会被误认为是不相关的空格

与您的问题无关,但我还建议将
XmlTextWriter
包装在using块中:

using (XmlTextWriter writer = new XmlTextWriter("config.cfg", Encoding.UTF8))
{
    xslTrans.Load(xslPath);
    xslTrans.Transform(xPathDoc, null, writer);
}

它会自动正确处理写入程序的处理。

什么是“一切正常”,什么是“这种行为”?请提供XSLT转换的输出并说明问题所在。。。用一种可以理解的方式来定义你的问题是第一个,也是很明显的建议。很好,我会很快尝试,如果你的答案有效,我会把它标记为接受。如果我正在使用using语句,我应该调用writer.Close(),还是dispose也为我处理了这个问题?@tkrause在使用
using
语句时,没有必要关闭writer-dispose处理所有清理工作。太棒了,我对xslt及其方法和命令不是很熟悉。谢谢!:)
using (XmlTextWriter writer = new XmlTextWriter("config.cfg", Encoding.UTF8))
{
    xslTrans.Load(xslPath);
    xslTrans.Transform(xPathDoc, null, writer);
}