范围和 Sequences

javax\.xml\.XMLConstants\#FEATURE_SECURE_PROCESSING(FSP)是 XML 处理器(包括 DOM,SAX,架构验证,XSLT 和 XPath)的必需功能。设置为true时,建议实现启用由上面指定的新属性定义的访问限制。为了兼容性,尽管对于 DOM,SAX 和 Pattern 验证默认情况下 FSP 为 true,但是 JAXP 1.5 并未启用新限制。

对于 JDK 8,建议在显式设置 FSP 时将新的accessExternal\*属性设置为空字符串。仅当通过 API 设置 FSP 时(例如factory\.setFeature\(FSP, true\)。尽管 FSP 对于 DOM,SAX 和 Schema Validation 在默认情况下为 true,但不会将其视为“显式”设置,因此 JDK 8 默认情况下未设置限制。

jaxp\.properties文件中指定的属性会影响 JDK 或 JRE 的所有调用,并将覆盖其默认值或由 FEATURE_SECURE_PROCESSING 设置的默认值。

设置后,系统属性将仅影响一次调用,并且将覆盖默认设置或 jaxp.properties 中设置的设置,或由 FEATURE_SECURE_PROCESSING 设置的设置。

通过 JAXP 工厂或SAXParser指定的 JAXP 属性优先于系统属性jaxp\.properties文件以及javax\.xml\.XMLConstants\#FEATURE_SECURE_PROCESSING

在以下情况下,新的 JAXP 属性对它们试图限制的相关构造没有影响:

  • 当有解析器并且解析器返回的源不为 null 时。这适用于可能在 SAX 和 DOM 解析器上设置的实体解析器,StAX 解析器上的 XML 解析器,SchemaFactory 上的 LSResourceResolver,转换器上的 Validator 或 ValidatorHandler 或 URIResolver。

  • 通过调用SchemaFactorynewSchema方法显式创建架构时。

  • 当不需要外部资源时。例如,参考实现支持以下功能/属性,并且可用于指示处理器不加载外部 DTD 或解析外部实体。

http://apache.org/xml/features/disallow-doctype-decl true
http://apache.org/xml/features/nonvalidating/load-external-dtd false
http://xml.org/sax/features/external-general-entities false
http://xml.org/sax/features/external-parameter-entities false