# 范围和顺序

> 原文： [https://docs.oracle.com/javase/tutorial/jaxp/properties/scope.html](https://docs.oracle.com/javase/tutorial/jaxp/properties/scope.html)

`javax.xml.XMLConstants＃FEATURE_SECURE_PROCESSING` （FSP）是 XML 处理器的必需功能，包括 DOM，SAX，模式验证，XSLT 和 XPath。当设置为 `true` 时，建议实现启用上面指定的新属性定义的访问限制。为了兼容性，JAXP 1.5 不启用新的限制，尽管默认情况下 FSP 对于 DOM，SAX 和模式验证是正确的。

对于 JDK 8，当显式设置 FSP 时，建议将新的 `accessExternal *` 属性设置为空字符串。这只是通过 API 设置 FSP 的情况，例如 `factory.setFeature（FSP，true）`。虽然默认情况下 FSP 对于 DOM，SAX 和模式验证是正确的，但它不被视为“显式”设置，因此默认情况下 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。
*   通过调用 `SchemaFactory` 的 `newSchema` 方法显式创建模式时。
*   不需要外部资源时。例如，参考实现支持以下特征/属性，并且可以用于指示处理器不加载外部 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

    ```