當使用document(uri)
函數在XSLT中加載另一個文檔,其中目標文檔包含DTD時,我得到一個XslTransformException
,包含內部XmlException
:如何在XML中允許DTD使用XslCompiledTransform(.NET)通過XSLT的文檔(uri)函數加載的文檔
出於安全原因,此XML文檔中禁止使用DTD。要啓用DTD處理,請將XmlReaderSettings上的ProhibitDtd屬性設置爲false,並將設置傳遞給XmlReader.Create方法。
由於XmlReader
是XSLT實現沒有直接的方法來創建與我想設置的XmlReader中,並沒有XslCompiledTransform
內創建,XmlResolver
或相關類似乎提供任何形式的掛鉤。
(我使用DTD設置一些HTML實體,以使文檔更容易的創作。)的基礎上看着XmlUrlResolver
在反射板的剛剛加載的URI的目標的一個流。
E.g.是XSLT包含
<xsl:apply-templates select="document('more.xml')/root"/>
和more.xml
包含DTD然後上述例外是結果。
謝謝,這個工程。對完全無法提及您的文檔提出一些反饋的時間可以返回Stream以外的其他內容。 – Richard 2010-04-06 11:20:28
@Richard:http://blogs.msdn.com/xmlteam/articles/Introducing_XslCompiledTransform.aspx是XslCompiledTransform上最好的文檔。 – 2010-04-06 15:32:31
他們更改了URL,這是新的URL:http://blogs.msdn.com/b/xmlteam/archive/2005/11/16/introducing-xslcompiledtransform.aspx – 2010-10-14 14:26:49