# 新属性

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

JAXP 1.5 定义了三个新属性，可用于调节 XML 处理器是否解析上面列出的外部资源。属性是：

*   `javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD`
*   `javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA`
*   `javax.xml.XMLConstants.ACCESS_EXTERNAL_STYLESHEET`

这些 API 属性具有相应的系统属性和 jaxp.properties。

## ACCESS_EXTERNAL_DTD

**名称**： `http：//javax.xml.XMLConstants/property/accessExternalDTD`
**定义**：限制对外部 DTD 的访问，对协议的外部实体引用指定。
**值**：参见[属性值](#values)
**默认值**：`全部`，允许所有协议连接。
**系统属性**： `javax.xml.accessExternalDTD`

## ACCESS_EXTERNAL_SCHEMA

**名称**： `http：//javax.xml.XMLConstants/property/accessExternalSchema`
**定义**：限制访问为外部参考设置指定的协议 `schemaLocation` 属性，Import 和 Include 元素。
**值**：参见[属性值](#values)
**默认值**：`全部`，允许所有协议连接。
**系统属性**： `javax.xml.accessExternalSchema`

## ACCESS_EXTERNAL_STYLESHEET

**名称**： `http：//javax.xml.XMLConstants/property/accessExternalStylesheet`
**定义**：限制访问为外部参考设置指定的协议样式表处理指令，文档功能，导入和包含元素。
**值**：参见[属性值](#values)
**默认值**：`全部`，允许所有协议连接。
**系统属性**： `javax.xml.accessExternalStylesheet`

## $ {java.home} /lib/jaxp.properties

可以在 `jaxp.properties` 中指定这些属性，以使用 Java 运行时定义所有应用程序的行为。格式为 `property-name = [value] [，value] *` 。例如：

```
javax.xml.accessExternalDTD=file,http

```

属性名称与系统属性的名称相同： `javax.xml.accessExternalDTD` ， `javax.xml.accessExternalSchema` 和 `javax.xml.accessExternalStylesheet` 。

所有属性都具有相同格式的值。

**Value** ：以逗号分隔的协议列表。协议是 URI 的方案部分，或者在 JAR 协议的情况下，“jar”加上由冒号分隔的方案部分。方案定义为：

`scheme = alpha *（alpha | digit |“+”|“ - ”|“。”）`
其中 alpha = a-z 和 A-Z。

和 JAR 协议：
`jar [：scheme]`

协议不区分大小写。将忽略值中 `Character.isSpaceChar` 定义的任何空格。协议的示例是`文件`， `http` ， `jar：文件`。

**默认值**：默认值是特定于实现的。在 JAXP 1.5 RI，Java SE 7u40 和 Java SE 8 中，默认值为 `all` ，授予所有协议的权限。

**授予所有访问权限**：关键字 `all` 授予所有协议权限。例如，在 `jaxp.properties` 中设置 `javax.xml.accessExternalDTD = all` 将允许系统像以前一样工作，对访问外部 DTD 和实体引用没有任何限制。

**拒绝任何访问**：空字符串，即“”表示没有授予任何协议的权限。例如，在 `jaxp.properties` 中设置 `javax.xml.accessExternalDTD =“”`会指示 JAXP 处理器拒绝任何外部连接。