1
我有下面的代碼C# - 如何刪除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='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.
請幫忙。
仍然收到此錯誤:XSLT編譯錯誤。名稱不能以字符'''開頭,十六進制值爲0x27。 –
對不起,我的不好;我通常將我的選擇放在「」中的字符串文字中,我偶然使用了「」。我已經解決了答案。 – Flynn1179
非常感謝。翻譯作品。這是我的最終字符串的樣子。 string xsltPiece =「 」 –