我看到一些奇怪的行爲(或者我失去了一些東西)具有以下NUnit測試:爲什麼包含TranslatedText節點會導致XslCompiledTransform失敗?
[Test]
public void Test() {
const string works = @"
<doc>
<simple>simple</simple>
<ItemDef>
<Description>
</Description>
</ItemDef>
</doc>
";
const string doesntWork = @"
<doc>
<simple>simple</simple>
<ItemDef>
<Description>
<TranslatedText>3</TranslatedText>
</Description>
</ItemDef>
</doc>
";
string xsl = @"<?xml version='1.0' encoding='iso-8859-1'?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output indent='yes'/>
<xsl:template match='simple'>
<node>
</node>
</xsl:template>
</xsl:stylesheet>
";
TransformXml2(works, xsl);
TransformXml2(doesntWork, xsl);
}
protected static void TransformXml2(string xml, string xsl) {
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(XmlReader.Create(new StringReader(xsl)));
XmlDocument document = new XmlDocument();
document.LoadXml(xml);
XmlReader input = new XmlNodeReader(document.DocumentElement);
transform.Transform(input, new XsltArgumentList(), XmlTextWriter.Create(new StringBuilder()));
}
當我運行這個測試,第二TransformXml2調用失敗,出現以下錯誤:
令牌狀態爲EndRootElement的文本將導致無效的XML文檔。如果要編寫XML片段,請確保ConformanceLevel設置設置爲ConformanceLevel.Fragment或ConformanceLevel.Auto。
XML的兩片之間的唯一區別是以下節點:
<TranslatedText>3</TranslatedText>
任何人有任何想法是怎麼回事?
就這麼你知道,我知道TransformXml2調用沒有任何用處。我只是想提供一些演示錯誤的可執行代碼。
找到了dup:http://stackoverflow.com/questions/3288606/writing-xml-in-c-sharp-token-startelement-in-state-epilog-would-result-in-an –