Добавление XSLT-преобразования в C # & # xA; и & # xD; на выход - PullRequest
19 голосов
/ 11 мая 2009

У меня проблема с преобразованием XSLT:

style="width:{Data/PercentSpaceUsed}%;"

И значение Data / PercentSpaceUsed является целым числом 3.

И это выводит:

style="width:
     3
 %;"

вместо того, что я ожидал:

style="width:3%;"

Вот код, который выполняет преобразование: xslt_xslt - это преобразование xml, sw.ToString() содержит 
 и 
, чего я не ожидал.

var xslTransObj = new XslCompiledTransform();
var reader = new XmlTextReader(new StringReader(xslt_xslt));
xslTransObj.Load(reader);
var sw = new StringWriter();
var writer = new XmlTextWriter(sw);
xslTransObj.Transform(new XmlTextReader(new StringReader(xslt_data)), writer);

ResultLiteral.Text = sw.ToString();

Ответы [ 3 ]

28 голосов
/ 11 мая 2009


 - это возврат каретки и перевод строки в вашем XML или XSLT. Убедитесь, что xml похож на

<Value>3</Value>

Вместо

<Value>
    3
</Value>

Я полагаю, что есть способ остановить использование пробела в вашей трансформации, хотя я не знаю этого из головы.

11 голосов
/ 11 мая 2009

Вы получаете пробелы из исходного документа. Используйте

style="width:{normalize-space(Data/PercentSpaceUsed)}%;"

чтобы убрать пробел. Другой вариант в вашем случае будет использовать

style="width:{number(Data/PercentSpaceUsed)}%;"
3 голосов
/ 10 марта 2011

1001 * попробовать *


XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = true;
settings.IndentChars = "\t";
settings.NewLineHandling = NewLineHandling.None;
XmlWriter writer = XmlWriter.Create(xmlpath, settings);

для входного пробела, который будет сохранен на выходе для значений атрибута.

примечание: при указанных выше настройках вкладки используются для отступа

...