Ошибки компиляции XMLResolver - PullRequest
0 голосов
/ 27 мая 2009

Итак, я пытаюсь использовать XMLResolver для загрузки XML-файла. Он прекрасно работает, когда я создаю xmlreader из имени файла, но завершается неудачно, когда я делаю это, используя stringreader. Это дает мне XslLoadException: XSLT compiler error. Внутреннее исключение "An entry with the same key already exists."

    public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
    {
        string f = Path.Combine(@"C:\tmp", Path.GetFileName(absoluteUri.ToString()));
        string testaxCont = @"<xsl:stylesheet xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" version=""1.0""><xsl:template name=""J""/></xsl:stylesheet>";
        string testaxCont2 = File.ReadAllText(f);
        bool j = testaxCont.Equals(testaxCont2); //This equals true
        XmlReader tmp = XmlReader.Create(new StringReader(File.ReadAllText(f))); //crash
//            XmlReader tmp = XmlReader.Create(f); //don't crash
        return tmp;
    }

testax.xslt    
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:include href="testax2.xsl" /></xsl:stylesheet>

testax2.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template name="J"/></xsl:stylesheet>

1 Ответ

2 голосов
/ 27 мая 2009

Мне нужно было изменить пунктирную строку на XmlReader tmp = XmlReader.Create(new StringReader(File.ReadAllText(f)),null,f); Для файла он имеет базовый URI, но для строки его нет.

...