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.