将 XML 解析器功能传递给 Saxon 以进行样式表解析

Passing XML Parser features to Saxon for stylesheet parsing

在 Saxon API 中,可以使用 XML_PARSER_FEATURE 配置功能将 XML 解析器功能传递给配置对象。

但这似乎只适用于源文档的解析,而不适用于 XSLT 样式表。除了插入自定义解析器之外,还有其他配置样式表解析的方法吗?

具体来说,出于安全原因,我需要确保禁用外部实体。

首先,请注意,如果您不信任样式表,除了使用外部实体之外,还有很多很多方法可以造成损害。所以禁用外部实体只是您需要采取的步骤之一:其中最重要的是禁用自反扩展函数的使用。

配置用于处理样式表模块的解析器的最佳方法是自己创建它。对于主样式表模块,提供一个 SAXSource 包含一个 XMLReader 以您想要的方式配置。对于包含和导入的模块,使用 URIResolver 分配 XMLReader 和 returns 分配 SAXSource.

还有一个配置选项 Feature.STYLE_PARSER_CLASS。您可以使用它来实现您自己的 class,它实现了 XMLReader 接口,将实际解析委托给您可以完全控制的“真实”XMLReader