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 对象支持的参数列表,并且应用程序至少可以为其设置一个值。注意,此列表还可以包含在此规范之外定义的参数名称。