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],添加字符' - '(HYPHEN-MINUS),但不被DOM实现强制执行。 DOM 3级核心实现需要识别本规范中定义的所有参数。 某些参数值也可能需要由实现支持。 参考参数的定义来知道是否必须支持一个值。
注意:参数与SAX2 [ SAX ]中使用的特征和属性相似。
DOM中定义的以下参数列表:
"canonical-form"
true
DocumentType
节点(如果有),或从每个元素中删除多余的命名空间声明。
请注意,这仅限于DOM中可以表示的内容;
特别是没有办法在DOM中指定属性的顺序。
此外,将此参数设置为true
还将设置下列参数的状态。
之后对其中一个参数的更改将会将“规范形式”恢复为false
。
参数设置为false
:“entities”,“normalize-characters”,“cdata-sections”。
参数设置为true
:“namespaces”,“namespace-declaration”,“well-formed”,“element-content-whitespace”。
除非在参数说明中明确指定,否则其他参数不会更改。
false
"cdata-sections"
true
CDATASection
个节点。
false
CDATASection
的文档中的节点到Text
节点。
然后将新的Text
节点与任何相邻的Text
节点组合。
"check-character-normalization"
true
DOMError.type
等于“检查字符归一化失败”的错误。
false
"comments"
true
Comment
个节点。
false
Comment
节点。
"datatype-normalization"
true
true
。
有了这个参数启动时“验证”是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
个节点,将实体扩展直接放在其位置。
Text
节点是归一化的,如在限定的Node.normalize
。
文件中只保留unexpanded entity references 。
注意:此参数不影响Entity
节点。
"error-handler"
DOMErrorHandler
对象。
如果在文档中遇到错误时,实现将回调DOMErrorHandler
使用此参数注册。
该实现可以提供默认的DOMErrorHandler
对象。
当调用时, DOMError.relatedData
将包含最接近发生错误的节点。
如果实现无法确定发生错误的节点, DOMError.relatedData
将包含Document
节点。
在错误处理程序内对文档的突变将导致执行依赖的行为。
"infoset"
true
false
:“validate-if-schema”,“entities”,“datatype-normalization”,“cdata-sections” 。这将强制以下参数为true
:“namespace-declaration”,“well-formed”,“element-content-whitespace”,“comments”,“namespaces”。其他参数不会更改,除非在参数。
请注意,仅当适当设置上述指定的参数时,使用getParameter
查询此参数getParameter
返回true
。
false
infoset
到false
没有任何效果。
"namespaces"
true
false
"namespace-declarations"
false
。
true
false
false
,命名空间前缀( Node.prefix
)仍保留。
"normalize-characters"
true
false
"schema-location"
DOMString
对象,该列表由空格分隔(与第2.3节[ XML 1.0 ]中定义的nonterminal production S匹配的字符 ),表示应发生验证的模式,即当前模式。
在此列表中的必须使用指定的类型相匹配引用的架构的schema-type
,否则实现的行为不确定。
使用此属性指定的模式优先于文档本身指定的模式信息。
对于名称空间感知模式,如果使用此属性指定的模式和文档实例中指定的架构(即使用schemaLocation
属性)在模式文档中(即使用模式import
机制)共享相同的targetNamespace
,则由用户指定的模式使用将使用此属性。
如果使用此属性指定的两个模式共享相同的targetNamespace
或没有命名空间,行为是依赖于实现的。
如果没有提供位置,则此参数为null
。
注意: "schema-location"
参数被忽略,除非设置了“模式类型”参数值。 强烈建议Document.documentURI
会进行设置,以便实现可以成功解析所引用的任何外部实体。
"schema-type"
DOMString
对象,并表示用于验证文档的模式语言的类型。
请注意,绝对URI上不进行词法检查。
如果未设置此参数,则可以根据支持的模式语言和加载时使用的模式语言,由实现提供默认值。
如果没有提供值,则此参数为null
。
注意:对于XML Schema [ 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-if-schema”和“validate”是互斥的,将其中一个设置为true
将另一个设置为false
。
false
true
,则仍必须进行验证。
"well-formed"
true
Document.xmlVersion
:
Node.nodeName
包含无效字符根据其节点类型,并生成一个DOMError
类型的"wf-invalid-character-in-node-name"
,具有DOMError.SEVERITY_ERROR
严重程度,如果必要的话; Attr
, Element
, Comment
, Text
, CDATASection
的无效字符节点,并生成一个DOMError
类型的"wf-invalid-character"
,具有DOMError.SEVERITY_ERROR
严重程度,如果必要的话; ProcessingInstruction
的无效字符节点,并生成一个DOMError
类型的"wf-invalid-character"
,具有DOMError.SEVERITY_ERROR
严重程度,如果必要的话; false
与实体相关联的系统标识符的分辨率使用Document.documentURI
完成。 然而,当DOM实现支持[ DOM Level 3 Load and Save ]中定义的功能“LS”时,参数“resource-resolver”也可以在Document
节点附加的DOMConfiguration
对象上使用。 如果设置了此参数, Document.normalizeDocument()
将调用资源解析器,而不是使用Document.documentURI
。
Modifier and Type | Method and Description |
---|---|
boolean |
canSetParameter(String name, Object value)
检查是否将参数设置为特定值。
|
Object |
getParameter(String name)
如果已知,返回参数的值。
|
DOMStringList |
getParameterNames()
此
DOMConfiguration 对象支持的参数列表,并且应用程序可以
DOMConfiguration 至少设置一个值。
|
void |
setParameter(String name, Object value)
设置参数的值。
|
void setParameter(String name, Object value) throws DOMException
name
- 要设置的参数的名称。
value
-新值,或null
如果用户希望取消设置该参数。
虽然value参数的类型定义为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
object and for which at least one value can be set by the application. Note that this list can also contain parameter names defined outside this specification.