删除用@创建的字符串中的额外空白

本文关键字:空白 字符串 创建 删除 | 更新日期: 2023-09-27 18:04:50

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

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处理器中,它会正常工作。

删除用@创建的字符串中的额外空白

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

一个便宜的方法来修复它将@"移动到下一行:

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