新属性

原文: 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 的访问,对协议的外部实体引用指定。 :参见属性值 默认值全部,允许所有协议连接。 系统属性javax.xml.accessExternalDTD

ACCESS_EXTERNAL_SCHEMA

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

ACCESS_EXTERNAL_STYLESHEET

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

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

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

  1. javax.xml.accessExternalDTD=file,http

属性名称与系统属性的名称相同: javax.xml.accessExternalDTDjavax.xml.accessExternalSchemajavax.xml.accessExternalStylesheet

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

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

scheme = alpha *(alpha | digit |“+”|“ - ”|“。”) 其中 alpha = a-z 和 A-Z。

和 JAR 协议: jar [:scheme]

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

默认值:默认值是特定于实现的。在 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 处理器拒绝任何外部连接。