本教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言变更以了解Java SE 9及后续版本中的更新语言功能的摘要。
请参阅JDK发行说明以了解所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息。
JAXP 1.5定义了三个新属性,用于调节XML处理器是否解析上述的外部资源。这些属性包括:
这些API属性有对应的系统属性和jaxp.properties文件。
名称: http://javax.xml.XMLConstants/property/accessExternalDTD
定义: 限制对外部DTD的访问,对指定的协议进行限制。
值: 参见 属性的值
默认值: all,允许连接到所有协议。
系统属性: javax.xml.accessExternalDTD
名称: http://javax.xml.XMLConstants/property/accessExternalSchema
定义: 限制对由schemaLocation属性、Import元素和Include元素设置的外部引用的协议进行限制。
值: 参见 属性的值
默认值: all,允许连接到所有协议。
系统属性: javax.xml.accessExternalSchema
名称: http://javax.xml.XMLConstants/property/accessExternalStylesheet
定义: 限制对由样式表处理指令、document函数、Import元素和Include元素设置的外部引用的协议进行限制。
值: 参见 属性的值
默认值: all,允许连接到所有协议。
系统属性: javax.xml.accessExternalStylesheet
这些属性可以在jaxp.properties中指定,以定义所有使用Java Runtime的应用程序的行为。格式为property-name=[value][,value]*。例如:
javax.xml.accessExternalDTD=file,http
属性名称与系统属性相同:javax.xml.accessExternalDTD,javax.xml.accessExternalSchema和javax.xml.accessExternalStylesheet。
所有属性的值格式相同。
值: 由逗号分隔的协议列表。协议是URI的方案部分,或者在JAR协议的情况下,是"jar"加上冒号分隔的方案部分。方案定义如下:
scheme = alpha *( alpha | digit | "+" | "-" | "." )
其中 alpha = a-z 和 A-Z。
以及JAR协议:
jar[:scheme]
协议是不区分大小写的。值中由Character.isSpaceChar定义的任何空格将被忽略。协议的例子有file,http,jar:file。
默认值:默认值是实现特定的。在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处理器拒绝任何外部连接。