c#
  • xslt
  • 2015-07-25 8 views 1 likes 
    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: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, она отлично работает.

    Спасибо за помощь.

    +0

    Я пробовал, кажется, не помогает. – Mark

    ответ

    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 a const string.

    +0

    Да, вот и все. благодаря – Mark

    Смежные вопросы