删除使用@创建的字符串中的多余空格

时间:2015-07-25 09:41:41

标签: c# xslt

我正在创建一个转换字符串,如下所示:

string transform = @"
              <?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:template match='*'>
                <xsl:copy>
                <xsl:for-each select='@*|*[not(* or @*)]'>
                <xsl:attribute name='{name(.)}'><xsl:value-of select='.'/>
                </xsl:attribute>
                </xsl:for-each>
                <xsl:apply-templates select='*[* or @*]|text()'/>
                </xsl:copy>
                </xsl:template>
                </xsl:stylesheet>
            ";

当我加载它时,我收到此错误: {“意外的XML声明.XML声明必须是文档中的第一个节点,并且不允许在它之前出现空白字符。第2行,第21行。”} 据我所知,它抱怨新线前面的空白区域。那么,这里的想法是什么?我应该删除额外的空格吗?如果我将该字符串复制到xslt处理器中,它可以正常工作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

它抱怨@"和第一个<之间的字符串部分。变换中的所有其他空格都将被忽略。

一种便宜的解决方法是将@"移到下一行:

string transform =
        @"<?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:stylesheet>
        ";

或者,您可以在逐字字符串上调用Trim()

string transform = @"
          <?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:stylesheet>
        ".Trim();

但您将无法再使transform成为const string