XML学习第二篇

前端之家收集整理的这篇文章主要介绍了XML学习第二篇前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

XML学习第二篇

一、命名冲突

1.XML的元素名是不固定的,当两个不同的文档使用同样的名称描述两个不同类型的元素的时候,就会发生命名冲突。

可以使用前缀解决命名冲突问题。

2.命名空间:

使用命名空间的原因避免元素名冲突。

使用URL作为XML的命名空间(NameSpace),相当于java中的包

命名空间的语法定义:

Xmlns:[prefix] = “URL”

元素和属性都可以用命名空间

总结:

1.一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的,

DTD包含一套用来描述并限制XML文档结构的语法规则:

1.元素的定义规则

2.元素之间的关系规则

3.属性的定义规则

4.可是用的实体或者符号规则

2.命名空间用于避免命名冲突

3.在XML中使用全球唯一的URL作为NameSpace

二、Schema学习与使用

1.理解Schema的数据类型和元素类型,理解验证与约束

2.什么是Schema?

1.XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式

2.XML Shemale 规定XML文档的结构和每个元素/属性的数据类型

3.使用Schema的好处

1.由于DTD的局限性

1.DTD不遵守XML语法(写XML文档实例的时候用一种语法,写DTD的时候用另外一种语法)

2.DTD的数据类型有限(与数据库类型不一致)

3.DTD不可扩展

4.不支持命名空间(命名冲突)

2.Schema的新特性

1.Schema基于XML语法,可以用能处理XML文档的工具处理

2.大大扩充了数据类型,可以自定义数据类型

3.Schema支持元素的继承

4.schema支持元素的属性

Schema 的数据类型 ---基本数据类型

数据类型

描述

String

表示字符串

Boolean

布尔型

Declmal

代表特定精度的数字

Float

表述单精度32位浮点数

double

表述双精度64位浮点数

duration

表示持续时间

dateTime

代表特定时间

time

代表特定的时间,但是每天重复

date

代表日期

hexBinary

代表十六进制数

anyURI

代表一个URI,用来定位文件

NOTATION

代表NOTATION类型

Schema的数据类型的特性

特性

描述

enumeration

在指定的数据集中旋转着,限定用户的选值

fractionDigits

限定最大的小数位,用于控制精度

length

指定数据的长度

maxExclusive

指定数据的最大值(小于)

maxInclusive

指定数据的最大值(小于等于)

minExclusive

指定最小值(大于)

minInclusive

指定最小值(大于等于)

minLength

指定最小长度

Pattern

指定数据的显示规范

5.Schema(模式):其作用与dtd一样,也是验证XML文档的有效性,只不过它提供了比dtd更强大的功能和更细粒度的数据类型,另外,schema还可以自定义数据类型。此外,

Schema也是一个XML,而dtd不是一个XML

6.所有的schema文件,其根元素必须是schema.

Schema的数据类型

1.简单类型:

1.内置的数据类型(built-indata types)

1.基本的数据类型

2.扩展的数据类型

2.用户自定义的数据类型(通过SimpleType定义)

2.复杂类型(通过complex定义)

Schema的扩展数据类型

数据类型

描述

ID

用于唯一标示元素

IDREF

参考ID类型的元素或属性

ENTITY

实体类型

NMTOKEN

NMTOKEN类型

NMTOKENS

NMTOKEN类型集

long

表示整形数:大小介于-9223372036854775808和9223372036854775807之间

int

表示整型数,大小介于-2147483648和2147483647之间

short

表示整型数,大小介于-32768和32767之间

byte

表示整型数,大小介于-128和127之间

8.Schema的元素类型

1.schema

作用:包含已经定义的schema

用法:<xs:shema>

属性

Xmlns,targetNames

2.element(choice)

作用:声明一个元素

属性:name,type,ref minOccurs maxOccurs substituionGroup fixed default

3.attribute(list)

作用:声明一个属性

属性: name/type /ref//use

实例:

<xs:comlexType name=”mycomplexType”

<xs:attribute name=”mybaseattribute”type=”xs:string” use=”required” />

</xs:complexType>

4.group(union)

作用:把一组元素声明组合在一起,以便它们能够一起呗符合类型应用

属性:name/ref

实例:

<xs:element name=”thinge1” type=”xs:string” />

<xs:element name=”thing2” type=”xs:stirng” />

<xs:group name=”myGroupOfthiings”>
<sx:sequence>

<xs:element ref=’thing1” />

<xs:element ref=”thing2” />

<xs:sequence/>

<xs:group>

<xs:complexType name=”myConplexType” >

<xs:group ref=”myGroupOfthings” / >

<xs:attribute ref=”myAttribute” />

</xs:complexType>

5attributeGroup(sequence)

作用:把一组属性声明组合在一起,以便可以被符合类型使用,与元素分组类似

属性:name/ ref

实例:

<xs:attributeGroup name=”myAttributeGroup”>

<xs:attribute name=”someattribute1” type=”xs:integer /”>

<xs:attribute name=”someattribute2” type=”xs:string” />

<xs:attributeGroup/>

<xs:complexType name=”myElementType”>

<xs:attributeGroup ref=”myAttributeGroup”/>

<xs:complexType />

6.simpleType(restriction)

作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息

属性:name

内容:应用已经存在的简单类型,三种方式:

Restrict ------>限定一个范围

List------>从列表中选择

Union-------->包含一个值的结合

子元素为<xs:restrction >-------->定义一个约束条件

<xs:simpleType name=”freezebolirangeInteger”>

<xs:restrction base=”xs:integer” >

<xs:minInclusive value=””0 />

<xs:maxInclusive value=”100” />

</xs:restrction >

</xs:simpleType>

子元素为<xs:list>

从一个特定的数据类脑血管的集合中选择定义一个简单类型的元素

<xs:simpleType name=”listOfDates” >

<xs:lsit itemType=”xs:date” />

</xs:simpleType >

子元素为<xsunion>

从一个特定的简单数据类型的集合中选择定义一个简单类型的元素,表示该complexType没有子元素,同时该complexType需要有属性否则就成为了simpleType。

<xs:attributename=”allframesize” >

<xs:simpleType>

<xs:union>

<xs:simpleType >

<xs:restriction base=”roadbikesize” />

</xs:simpleType>

<xs:restriction base=”mountaninbikesize”./>

</xss:simpleType>

</xs:union>

</xs:simpleType>

7.simpleContent

作用:应用于complexType,对它的内容进行约束和扩展

实例:

<xs:element name=”shoeSize” >

<xs:complexType>

<xs:simpleContent>(元素下不包括子元素)

<xs;extension base=”xs:decimal” >

<xsattribute name=”sizing”

<xs:simpleType>

<xs:restrction base”xs:string” >

<xs:enumeration value=”US”>

<xs:enumeration value=”European”>

<xs:enumeration value=”UK” >

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:extension>

</xs:complexType>

</xs:element>

8.complexType

作用:定义一个符合类型,它决定了一组元素和属性值的约束和相关信息,。

属性:name

实例:

<xs:complexType name=”interationalShoeSize”>

<xs:simpleContent>

,<xs:extension base=”xs:decimal”>

<xs:attribute name=”sizing” type=”xs:stirng”/>

</xs:extension>

</xs:comlexType>

<xs;element name=”myShoeSize” type=”interationalShoeSize”>

complexType simpleType的区别(重要)

1.simpleType类型的元素中不能包含元素或者属性

2.当需要声明一个元素的子元素和/属性时,用complexType;

3.当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType

Choice元素

作用:允许唯一的一个元素从一个组中被选择

属性:minOccurs/maxOccurs

实例:

<xs:complexType name=”chadState” >

<xs:choice minOcccurs=”1” maxOccurs=”1” >

<xs:element ref=”selected” >

<xs:element ref=unselected”>

<xs:element ref=”dimpled’ >

<xs:element ref=”perforated” >

</xs:choice>

<xs:attribute name=”candidate” type=”candidateType”>

</xs:complexType>

Sequence元素

作用:给一组元素一个特定的序列

实例:
<xs:element name=”zooAnimals”>

<xs:complexType>

<xs:sequenceminOccurs=”0” maxOccurs=”unabound”.>

<xs:element name=”elephant” />

<xs:element name=”bear” />

<xs:element name=”giraffe” />

</xs:sequence>

</xs:complexType>

</xs:element>

1.用schema的数据及元素类型声明XMl文档的元素和属性

声明元素: <xs:element>

声明属性: <xs:attribute>

2.声明元素的方法

1.使用内置的数据类型

<xs:element name= ”cat” type=”xs:string” />

<xs;element name=”dog”type=”xs:string”/>

<xs:element name=”redDog” type=”xs:string” substitutionGroup=”dog” />表示出现redDog的地方可以用dog替换

<xs:element name=”brownDog” type=”xs:string” substitutionGroup=”dog”/ >

说明:通过DOCTYPE可以明确指定文档的根元素,因为DOCTYPE后面跟的元素就是文档的根元素,通过Schema是没法明确指定目标XML文档的根元素。XMlSpy是通过推断哪个元素包含了其他元素来选择包含其他元素最多的那个元素作为文档的根,

我们可以明确指定文档的根元素而不必按照XMLSpy的生成来做。

总结

1.Schema是另一种文档类型定义,它遵循XML的语言规范

2.Schema是可扩展的,支持命名空间

3.Schema支持更多的数据类型与元素类型

4.Schema用element声明元素,用attribute声明元素的属性

5.Schema用simpletype定义简单类型,用complexType定义复杂数据类型。

猜你在找的XML相关文章