获取XML的验证模式。

来源:互联网 发布:厦门java工程师待遇 编辑:程序博客网 时间:2024/06/02 02:16

1、DTD与XSD区别。

DTD(Document Type Definition)即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制,属于XML文件组成的一部分。DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。

一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。

要使用DTD验证模式的时候需要在XML文件的头部声明。


XML Schema语言就是XSD(XML Schemas Definition)。XML Schema描述了XML文档的结构。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析塔。

在使用XML Schema文档对XML实例文档进行检验,除了要声明名称空间外,还必须制定该名称空间所对应的XML Schema文档的存储位置,通过schemeLocation属性指定名称空间所对应的XML Schema文档的存储位置。


2、验证模式的读取。

getValidationModeForResource(resource);  / / 获取对XML文件的验证模式。

getValidationMode(); //  如果手动指定了验证模式则使用指定的验证模式(可以对调用XmlBeanDefinitionReader中的setValidationMode方法进行设定)

int detectedMode = detectValidationMode(resource); // 如果未指定则使用自动检测

InputStream inputStream = resource.getInputStream(); // 获取inputStream对象

this.validationModeDetector.detectValidationMode(inputStream); // 进行验证


Spring用来检测验证模式的办法就是判断是否包含DOCTYPE,如果包含就是DTD,否则就是XSD。


原创粉丝点击