C#-在XSLT中创建新元素时如何删除空格

C#-在XSLT中创建新元素时如何删除空格,c#,xml,xslt,C#,Xml,Xslt,我有以下代码 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='ro

我有以下代码

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);
stringxml=@”
场A
";
字符串xsl=@”
";
XDocument newTree=新XDocument();
使用(XmlWriter=XmlWriter.Create(newTree.CreateWriter()))
{    
XslCompiledTransform xslt=新的XslCompiledTransform();
Load(XmlReader.Create(newstringreader(xsl));
Transform(XDocument.Parse(xml.CreateReader(),writer);
}
控制台写入线(newTree);
之后,我希望有这样的xml

<root>
   <FieldA />
</root>

相反,我得到了以下错误:名称中不能包含“”字符(十六进制值0x20)。 在创建新元素之前,我需要将空格“FieldA”删除为“FieldA”。 尝试了替换的不同变体:

replace({@fieldname}, ' ', ''). error: XSLT compile error, Name cannot begin with ''' character, hex 0x27, cannot be included in name.

replace({$fieldname},&apos; &apos;,&apos;&apos;). The '(' character, hex 0x28, cannot be included in name.

<xsl:preserve-space elements="*" /> - Does not help either.
replace({@fieldname},'','')。错误:XSLT编译错误,名称不能以“”开头,十六进制0x27不能包含在名称中。
替换({$fieldname}、&apos;、&apos;&apos;)。名称中不能包含“(”字符,十六进制0x28。
-这也无济于事。

请帮忙。

使用翻译功能:


这只是将任何空格转换为空字符串。Translate有点像文本替换,但它仅适用于单个字符,对于转换大小写或剥离出现的单个字符非常有用。

仍然会出现此错误:XSLT编译错误。名称不能以字符“”、十六进制值0x27开头。抱歉,我的错误;我通常将我的选择包含在“”中,字符串文本包含在“”中的表达式中,我意外地将“”用于这两个表达式。我已修复了答案。非常感谢。translate工作正常。下面是我的最终字符串的样子。string xsltPiece=“”