gpt4 book ai didi

.net - 如何使用 XslCompiledTransform (.NET) 在通过 XSLT 的 document(uri) 函数加载的 XML 文档中允许 DTD

转载 作者:行者123 更新时间:2023-12-04 07:03:39 25 4
gpt4 key购买 nike

document(uri)函数用于在 XSLT 中加载另一个文档,其中目标文档包含一个 DTD 我得到一个 XslTransformException , 包含一个内部 XmlException :

For security reasons DTD is prohibited in this XML document. To enable DTD processing set the ProhibitDtd property on XmlReaderSettings to false and pass the settings into XmlReader.Create method.



作为 XmlReader是在 XSLT 实现中创建的,没有直接的方法可以使用我想要的设置创建 XmlReader,也没有 XslCompiledTransform , XmlResolver 1 或相关的类似乎提供了任何形式的钩子(Hook)。

(我正在使用 DTD 来设置一些 HTML 实体,以便更轻松地编写文档。)

1 基于查看 XmlUrlResolver在 Reflector 中,这只是将 URI 的目标作为流加载。

例如。 XSLT 是否包含
<xsl:apply-templates select="document('more.xml')/root"/>

more.xml包含一个 DTD 那么上面的异常就是结果。

最佳答案

一样的XmlResolver你传递给Transform方法用于文档功能,此解析器可以返回 XmlReader允许 DTD,而不是返回 Stream .您也可以返回IXPathNavigable .换句话说,您需要 XmlResolver 的专门实现。来解决这个问题。

关于.net - 如何使用 XslCompiledTransform (.NET) 在通过 XSLT 的 document(uri) 函数加载的 XML 文档中允许 DTD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1451704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com