2010-11-29 2 views
5

Я пытаюсь вывести фрагмент кода html. Но мне нужно, чтобы он был напечатан/отступом. Есть ли способ сделать это без использования <xsl:text>&#xa;</xsl:text> и <xsl:text>&#9;</xsl:text>?Как форматировать/отступать вывод XSL-преобразования

Я использовал следующую строку без каких-либо результатов.

<xsl:output method="html" indent="yes"/> 

Follwoing - код C#;

XslCompiledTransform XSLT = new XslCompiledTransform(); 
    XSLT.Load(xslPath); 

    using (XmlTextWriter writer = new XmlTextWriter(writePath, null)) 
    { 
     if (isTopLevel) 
     { 
      XSLT.Transform(XMLDocumentForCurrentUser, writer); 
     } 
     else 
     { 
      XsltArgumentList xslArg = new XsltArgumentList(); 
      xslArg.AddParam("MenuIndex", "", menuIndex); 
      XSLT.Transform(XMLDocumentForCurrentUser, xslArg, writer); 
     } 
    } 
// I write the output to file 
//All this works fine, only now I need the HTML to be readable (in the browser's view source or any notepad) 

Кто-нибудь знает способ форматирования (по крайней мере отступ) XSLT-выхода?

+0

@conqenator: Если вы не хотите использовать параметр сериализации `xsl: output/@ indent` (возможно, потому, что это не так хорошо, как в MSXSL), и вы не хотите делать это вручную, тогда нет решение в рамках XSLT, а потому, что вы устанавливаете такие ограничения. – 2010-11-29 12:58:52

+0

Зачем голосовать? – 2010-11-29 13:33:29

+1

Вам нужно будет предоставить дополнительную информацию, чтобы мы могли понять, почему indent = «yes» не работает для вас. Итак, каков ваш XSLT-процессор, как именно вы выполняете преобразование, что именно вы преобразовываете в (например, файл?), Как вы смотрите на результат преобразования? – 2010-11-29 13:33:55

ответ

6

Не создавайте свой собственный XmlTextWriter, если вы хотите, чтобы XSLT-процессор применял директиву xsl: output. Вместо того, чтобы либо написать непосредственно в файл или создать XmlWriter следующим образом:

using (XmlWriter result = XmlWriter.Create(writePath, XSLT.OutputSettings)) 
{ 
     if (isTopLevel) 
     { 
      XSLT.Transform(XMLDocumentForCurrentUser, result); 
     } 
     else 
     { 
      XsltArgumentList xslArg = new XsltArgumentList(); 
      xslArg.AddParam("MenuIndex", "", menuIndex); 
      XSLT.Transform(XMLDocumentForCurrentUser, xslArg, result); 
     } 
} 
Смежные вопросы