У меня есть следующий код
string xml = @"<root>
<element>Field A</element>
</root>";
string xsl = @"<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:template match='root'>
<root>
<xsl:variable name='fieldname'>
<xsl:value-of select='element' />
</xsl:variable>
<xsl:element name='{$fieldname}'></xsl:element>
</root>
</xsl:template>
</xsl:stylesheet>";
XDocument newTree = new XDocument();
using (XmlWriter writer = XmlWriter.Create(newTree.CreateWriter()))
{
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(XmlReader.Create(new StringReader(xsl)));
xslt.Transform(XDocument.Parse(xml).CreateReader(), writer);
}
Console.WriteLine(newTree);
После этого я хотел бы получить такой xml
<root>
<FieldA />
</root>
Вместо этого я получаю эту ошибку: Символ '', шестнадцатеричное значение 0x20, не можетбыть включенным в имя.Похоже, мне нужно удалить пробелы 'Поле A' до 'FieldA' перед созданием нового элемента.Пробовал разные варианты замены:
replace({@fieldname}, ' ', ''). error: XSLT compile error, Name cannot begin with ''' character, hex 0x27, cannot be included in name.
replace({$fieldname},' ',''). The '(' character, hex 0x28, cannot be included in name.
<xsl:preserve-space elements="*" /> - Does not help either.
Помогите пожалуйста.