public interface DOMConfiguration
该 DOMConfiguration
接口表示文档的配置,并维护一个可识别的参数表。使用该配置,能够更改 Document.normalizeDocument()
行为,如将 CDATASection
节点替换为 Text
节点或指定在请求验证 Document
时必须使用的模式类型。DOMConfiguration
对象也可用于 DOMParser
和 DOMSerializer
接口中的 [DOM Level 3 Load and Save]。
由 DOMConfiguration
对象使用的参数名称可在整个 DOM Level 3 规范中定义。名称不区分大小写。要避免可能的冲突,根据惯例,应该使指向在 DOM 规范之外定义的参数的名称唯一。因为参数要作为属性公开,所以建议名称遵循 5.16 节带有字符 '-'(连字符号)的“[Unicode] 标识符”,但它不是由 DOM 实现强制执行的。要求 DOM Level 3 核心实现来识别在此规范中定义的所有参数。也可能要求某些参数值接受该实现的支持。若要知道一个值是否必须被支持,请参阅参数的定义。
注:参数类似于在 SAX2 [SAX] 中使用的功能和属性。
下面是在 DOM 中定义的参数列表:
"canonical-form"
true
DocumentType
节点(如果有),或从每个元素移除多余的名称空间声明。注意,这限于可以在 DOM 中表示的内容;需要特别指出的是,无法指定 DOM 中的属性的顺序。此外,将此参数设置为
true
还要设置下面列出的参数的状态。以后对这些参数中某个的状态的更改都会将“规范形式”转换回
false
。设置为
false
的参数:"entities"、" normalize-characters"、"cdata-sections"。设置为
true
的参数:"namespaces"、"namespace-declarations"、"well-formed"、"element-content-whitespace"。其他参数只有在参数描述中显式地指定时才更改。
false
"cdata-sections"
true
CDATASection
节点。
false
CDATASection
节点转换为
Text
节点。然后将新的
Text
节点与任何相邻
Text
节点合并起来。
"check-character-normalization"
"comments"
true
Comment
节点。
false
Comment
节点。
"datatype-normalization"
true
true
。"validate" 为
false
时激活此参数无效,且不发生模式规范化。
注:由于文档包含 XML 1.0 处理的结果,所以此参数不会像在 [XML 1.0] 的 3.3.3 节中定义的那样应用于属性值规范化,而只用于除文档类型定义 (DTD) 之外的模式语言。
false
"element-content-whitespace"
true
false
Text
节点,如在
[element content whitespace] 中描述的那样。期望该实现使用属性
Text.isElementContentWhitespace
来确定是否应该丢弃
Text
节点。
"entities"
true
EntityReference
节点。
false
EntityReference
节点,并直接将实体扩展放入适当位置。按
Node.normalize
中定义的那样,标准化
Text
节点。文档中只保留
未扩展的实体引用。
注:此参数不影响 Entity
节点。
"error-handler"
DOMErrorHandler
对象。如果在文档中遇到错误,则该实现将回调使用此参数注册的
DOMErrorHandler
。该实现可以提供默认的
DOMErrorHandler
对象。调用时,
DOMError.relatedData
将包含离发生错误的位置最近的节点。如果该实现不能确定发生错误的节点,则
DOMError.relatedData
将包含
Document
节点。从错误处理程序内部对文档的修改将导致与实现有关的行为。
"infoset"
true
false
:"validate-if-schema"、"entities"、"datatype-normalization"、"cdata-sections"。这迫使以下参数为
true
:"namespace-declarations"、"well-formed"、"element-content-whitespace"、" comments"、"namespaces"。其他参数只有在参数的描述中显式指定时才能更改。注意,只有在适当设置以上指定的单个参数时,使用
getParameter
查询此参数才能返回
true
。
false
infoset
设置为
false
无效。
"namespaces"
true
false
"namespace-declarations"
false
,则此参数无效。
true
false
Node.prefix
),即使此参数设置为
false
。
"normalize-characters"
"schema-location"
DOMString
对象,由空格分隔(与在 [
XML 1.0] 第 2.3 节定义的
nonterminal production S 匹配的字符),它表示对其进行验证的模式,即当前模式。此列表中引用的模式类型必须匹配用
schema-type
指定的类型,否则实现的行为不确定。使用此属性指定的模式优先于在文档本身中指定的模式信息。对于名称空间感知的模式而言,如果使用此属性指定的模式和模式文档(例如使用
schemaLocation
属性)中在文档实例中(例如使用模式
import
机制)指定的模式共享同一
targetNamespace
,则将使用由用户使用此属性指定的模式。如果使用此属性指定的两个模式共享同一
targetNamespace
,或不存在名称空间,则该行为与实现有关。如果未提供任何位置,则此参数为
null
。
注:忽略 "schema-location"
参数,除非设置了 "schema-type" 参数值。强烈建议设置 Document.documentURI
,以便实现可以成功解析所引用的所有外部实体。
"schema-type"
DOMString
对象,该对象包含绝对 URI 且表示用于对其验证文档的模式语言类型。注意,不对绝对 URI 进行词汇检查。如果未设置此参数,则该实现可以根据支持的模式语言和加载时使用的模式语言提供默认值。如果未提供任何值,则此参数为
null
。
注:对于 XML 模式 [XML Schema Part 1],应用程序必须使用值 "http://www.w3.org/2001/XMLSchema"
。对于 XML DTD [XML 1.0],应用程序必须使用值 "http://www.w3.org/TR/REC-xml"
。其他模式语言在 W3C 的作用域之外,因此为了使用此方法应该建议绝对 URI。
"split-cdata-sections"
true
DOMError.type
等于
"cdata-sections-splitted"
,
DOMError.relatedData
等于从该拆分得到的文档顺序的第一个
CDATASection
节点。
false
CDATASection
包含不可表示的字符时发出错误通知。
"validate"
true
true
。此参数将重新评诂:
Attr.specified
等于 false
的属性节点,如在 Attr
接口的描述中指定的那样; Text
节点的属性 Text.isElementContentWhitespace
的值; Attr
节点的属性 Attr.isId
的值; Element.schemaTypeInfo
和 Attr.schemaTypeInfo
。 注:"validate-if-schema" 和 "validate" 互斥,将其中一个设置为 true
就要将另一个设置为 false
。应用程序还应该考虑将参数 "well-formed" 设置为 true
,这是验证该文档时该选项的默认值。
false
true
,则仍可能进行验证。
"validate-if-schema"
true
true
的参数 "validate" 的行为相同。
注:"validate-if-schema" 和 "validate" 互斥,将其中一个设置为 true
就要将另一个设置为 false
。
false
true
,则仍必须进行验证。
"well-formed"
true
Document.xmlVersion
中使用的 XML 版本检查所有节点是否是良好格式的 XML:
Node.nodeName
是否包含无效字符;是否生成类型 "wf-invalid-character-in-node-name"
的 DOMError
(必要时带有 DOMError.SEVERITY_ERROR
severity); Attr
、Element
、Comment
、Text
、CDATASection
节点内的文本内容是否包含无效字符,是否生成类型 "wf-invalid-character"
的 DOMError
(必要时带有 DOMError.SEVERITY_ERROR
severity); ProcessingInstruction
节点内的数据是否包含无效字符,是否生成类型 "wf-invalid-character"
的 DOMError
(必要时带有 DOMError.SEVERITY_ERROR
severity); false
使用 Document.documentURI
解析与实体相关的系统标识符。但是,当 DOM 实现支持在 [DOM Level 3 Load and Save] 中定义的功能 "LS" 时,参数 "resource-resolver" 还可以在连接到 Document
节点的 DOMConfiguration
上使用。如果已设置了此参数,则 Document.normalizeDocument()
将调用资源解析程序,而不是使用 Document.documentURI
。
另请参见 Document Object Model (DOM) Level 3 Core Specification。
方法摘要 | |
---|---|
boolean |
canSetParameter(String name, Object value) 检查是否支持将参数设置为特定值。 |
Object |
getParameter(String name) 如果已知,则返回参数的值。 |
DOMStringList |
getParameterNames() 此 DOMConfiguration 对象支持的参数列表,并且应用程序至少可以为其设置一个值。 |
void |
setParameter(String name, Object value) 设置参数的值。 |
方法详细信息 |
---|
void setParameter(String name, Object value) throws DOMException
name
- 要设置的参数的名称。
value
- 新的值,如果用户希望取消设置该参数则为
null
。当将值参数的类型定义为
DOMUserData
时,对象类型必须匹配由参数的定义所定义的类型。例如,如果参数为 "error-handler",则该值必须是
DOMErrorHandler
类型。
DOMException
- NOT_FOUND_ERR: 参数名称不可识别时,引发此异常。
Object getParameter(String name) throws DOMException
name
- 参数的名称。
null
。
DOMException
- NOT_FOUND_ERR:参数名称不可识别时,引发此异常。
boolean canSetParameter(String name, Object value)
name
- 要检查的参数的名称。
value
- 一个对象。如果为
null
,则返回的值为
true
。
true
;如果参数不可识别或请求的值不受支持,则返回
false
。这样不会更改参数本身的当前值。
DOMStringList getParameterNames()
DOMConfiguration
对象支持的参数列表,并且应用程序至少可以为其设置一个值。注意,此列表还可以包含在此规范之外定义的参数名称。