New Properties
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 的访问,即对指定协议的外部实体引用。
值 :请参见属性值
默认值 :all
,允许连接到所有协议。
系统属性 :javax\.xml\.accessExternalDTD
ACCESS_EXTERNAL_SCHEMA
名称 :http://javax\.xml\.XMLConstants/property/accessExternalSchema
定义 :限制访问由schemaLocation
属性 Import 和 Include 元素设置的为外部引用指定的协议。
值 :请参见属性值
默认值 :all
,允许连接到所有协议。
系统属性 :javax\.xml\.accessExternalSchema
ACCESS_EXTERNAL_STYLESHEET
名称 :http://javax\.xml\.XMLConstants/property/accessExternalStylesheet
定义 :限制访问由样式表处理指令,文档功能,导入和包含元素为外部参考设置的协议。
值 :请参见属性值
默认值 :all
,允许连接到所有协议。
系统属性 :javax\.xml\.accessExternalStylesheet
${java.home}/lib/jaxp.properties
可以在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 处理器拒绝任何外部连接。