建站资讯

Java开发设计实例教程:用Schema认证xml

作者:admin 发布时间:2021-04-03
Webjx网页页面课堂教学提醒:过去大家用 DTD 而定义 XML 文本文档的和法性,而如今能够运用 XML Schema (XML Schema Definition,XSD)来取代 DTD。同 DTD 同样,XML Schema 叙述了 XML 文本文档的构造,即然这般,那麼大家为何应选择 XML Schema 而并不是 DTD 呢?

过去大家用 DTD 而定义 XML 文本文档的和法性,而如今能够运用 XML Schema (XML Schema Definition,XSD)来取代 DTD。同 DTD 同样,XML Schema 叙述了 XML 文本文档的构造,即然这般,那麼大家为何应选择 XML Schema 而并不是 DTD 呢?

1、XML Schema 可对于将来的要求开展拓展,DTD 不容易拓展。
2、XML Schema 更健全,作用更强劲。
3、XML Schema 根据 XML 撰写,一个 XML Schema 也是一个 XML 文档。DTD 不遵照 XML 英语的语法,这表明你没得很少去学习培训此外一门語言。
4、XML Schema 适用数据信息种类,内嵌多种多样数据信息种类。DTD 数据信息种类比较有限。
5、XML Schema 适用取名室内空间,DTD 不兼容取名室内空间。
6、XML Schema 在 二零零一年五月2日变成 W3C 规范。

近期已经将 Grapevine 升級至第2代版本号 ,将全 xml 配备变为 Annotation + xml 的方法。这般一来,将大大的简单化 xml 文档的配备,提升生产制造高效率。大家看来看 Grapevine2 中最基本的 xml 配备是怎样运用 XML Schema 开展认证的。

?xml version= 1.0 encoding= UTF-8 ?  
GRAPEVINE  
  GRAPE >  GRAPE > /GRAPEVINE  

它是一个再简易但是的 xml 文档,只是包括了 grapevine 根原素和 grape 子原素。grape 子原素中包括了 id、class、value 三个特性。在其中 id 和 class 为首选特性, value 为可选择。再说看一下 xsd (XML Schema)文档內容。

?xml version= 1.0 encoding= ISO-8859-1 ?  
XS:SCHEMA xmlns:xs= 2001/XMLSchema  
  XS:ELEMENT name= grapevine  
  XS:COMPLEXTYPE  
  XS:SEQUENCE  
  XS:ELEMENT name= urs= urs= unbounded  
  XS:COMPLEXTYPE  
  XS:ATTRIBUTE name= id use= required type= xs:string /  
  XS:ATTRIBUTE name= class use= required type= xs:string /  
  XS:ATTRIBUTE name= value type= xs:string /  
  /XS:COMPLEXTYPE  
  /XS:ELEMENT  
  /XS:SEQUENCE  
  /XS:COMPLEXTYPE  
  XS:UNIQUE name= idUnique  
  XS:SELECTOR xpath= .//grape /  
  XS:FIELD xpath= @id /  
  /XS:UNIQUE  
  /XS:ELEMENT  
/XS:SCHEMA

在上边的 schema 中,大家应用了规范的取名室内空间 (xs),与此取名室内空间有关联的 URI 是 Schema 的語言界定(Schema language definition),其规范值是 2001/XMLSchema。

接下去大家界定了 grapevine 原素,该原素包括了 grape 原素,grape 用 xs:element 界定,并由 xs:sequence urs= unbounded urs= 0 表明该原素能够出不来现。grape 原素的三个特性由 xs:attribute 界定,在其中 type= xs:string 表明该特性的数据信息种类 ( XML Schema 有着多种多样內建数据信息种类,如:xs:string、xs:integer、xs:boolean、xs:date 等)。use= required 表明该特性是首选的,若不确定义表明该特性为可选择的。

大家界定同样 id 的 grape 原素在 grapevine 中是唯一的,因此务必对 grape 的 id 特性开展唯一性认证。xs:unique 用于界定一个唯一性认证,你还可以用好几个 xs:unique 对好几个原素或特性开展认证。这儿大家只对于 id 特性,因此取名为 idUnique 。xs:selector 用于界定其范畴,xs:field 界定认证的值。还可以对于原素內容开展认证,以下:

ID resourceTestAbc /ID  
XS:UNIQUE name= idUnique  
XS:SELECTOR xpath= .//grape /  
XS:FIELD xpath= id /  
/XS:UNIQUE  

resourceTestAbc

运用xsd文档校检xml文档的java编码:

try { 
  SchemaFactory.newInstance( 2001/XMLSchema ) 
  .newSchema(new File( grapevine.xsd )).newValidator() 
  .validate(new StreamSource(xmlPath)); 
} catch (Exception ex) { 
// 认证不成功 

try {
  SchemaFactory.newInstance( 2001/XMLSchema )
  .newSchema(new File( grapevine.xsd )).newValidator()
  .validate(new StreamSource(xmlPath));
} catch (Exception ex) {
// 认证不成功
}

Popularity: 47%


收缩