将 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
。
在 Saxon API 中,可以使用 XML_PARSER_FEATURE
配置功能将 XML 解析器功能传递给配置对象。
但这似乎只适用于源文档的解析,而不适用于 XSLT 样式表。除了插入自定义解析器之外,还有其他配置样式表解析的方法吗?
具体来说,出于安全原因,我需要确保禁用外部实体。
首先,请注意,如果您不信任样式表,除了使用外部实体之外,还有很多很多方法可以造成损害。所以禁用外部实体只是您需要采取的步骤之一:其中最重要的是禁用自反扩展函数的使用。
配置用于处理样式表模块的解析器的最佳方法是自己创建它。对于主样式表模块,提供一个 SAXSource
包含一个 XMLReader
以您想要的方式配置。对于包含和导入的模块,使用 URIResolver
分配 XMLReader
和 returns 分配 SAXSource
.
还有一个配置选项 Feature.STYLE_PARSER_CLASS
。您可以使用它来实现您自己的 class,它实现了 XMLReader
接口,将实际解析委托给您可以完全控制的“真实”XMLReader
。