2012-08-07 1、XML实体可分为普通内部外部实体和内部外部参数实体。普通内部外部实体用在XML文档中,而内部外部参数实体用在DTD声明中。 2、DTD声明普通内部实体语法:<!ENTITY 实体名 实体值>,
调用时用格式“&实体名;”。 3、DTD声明普通外部实体语法:<!ENTITY 实体名 SYSTEM "URI/URL">,表示使用URI或者URL指向
文件的全部
内容替换实体名,比较少用,
调用时用格式“&实体名;”。 4、DTD声明内部参数实体语法:<!ENTITY %实体名 实体值>,
调用时用格式“%实体名;”。 5、DTD声明外部参数实体语法:<!ENTITY %实体名 SYSTEM "URI/URL">,表示使用URI或者URL指向
文件的全部
内容替换实体名,比较少用,
调用时用格式“%实体名;”。 6、XML的命名空间,当文档中相同元素名或
属性名但定义
内容部一致时,为了区分,需要使用命名空间。定义XML命名空间的语法为在首次使用该命名空间的地方使用xmlns:name="URL",定义后在元素名或
属性名前使用“name:”前缀就能标识该元素或
属性是name命名空间的
内容。命名空间使用全球唯一的URL作为命名空间的值,为的是保证命名空间的唯一性,但实际上URL只是一个标识字符串,URL是否有实际意义是没有关系的。XML的命名空间类似于Java中的package。 —————————————————————————————————————————————— 2012-08-08 1、Schema:与DTD一样,用于验证XML文档的有效性,并且比DTD提供更强大的
功能和更细粒度的数据类型,还
支持自定义数据类型,所以,Schema文档就是用来声明XML文档规则的。最重要的是,Schema本身也是一个XML
文件,遵守XML规范,而DTD不是。 2、Schema作为XML文档的一种,自然要遵循XML文档的基本语法,也需要验证它的有效性。Schema文档由DTD验证,所以Schema的本源也是DTD。 3、Schema元素schema:Schema文档的根元素,
属性有xmlns和targetNamespace。Schema文档的根元素规定必须为shemale,并且来自URL为http://www.w3.org/2001/XMLSchema的命名空间,Schema文档中使用的Schema元素和数据类型都来自于该命名空间,这个地址也标识了用于验证Schema的DTD文档。另外,这个命名空间的名字可以随便起,但是整个Schema文档中使用的Schema元素和数据类型都必须使用该命名空间名字标注。比如:<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mynamespace/myschema">,则文档中所有Schema元素和数据类型都必须用xs标注<xs:元素或类型名>。targetNamespace命名空间用于标识本Schema文档中
自定义的元素和数据类型,其URL值可以自己定义。 4、使用Schema文档校验XML文档
方法:在被校验的XML文档根元素使用<根元素 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation(Schema文档中没有定义targetNamespace的情况)/targetNamespace(有定义targetNamespace情况)="Schema文档地址">。 5、Schema的数据类型分为简单类型和复杂类型(通过complexType定义)。简单类型又分为内置数据类型和
用户自定义数据类型(通过simpleType定义)。内置数据类型又可再分为基本数据类型和扩展数据类型。 6、Schema元素element:用于声明被校验XML文档的一个元素,主要
属性有: 1)name:声明元素的名字; 2)type:声明元素的数据类型,可以使用Schema的数据类型,也可以使用
自定义的数据类型。该类型要么是声明元素的
属性,要么是声明元素
标签之间的
内容或者子元素。 3)ref:用于引用一个声明好的元素,如<xs:element ref="cat"/>,cat是本文档中已经声明的一个元素,该语句表示这里需要填充一个cat元素,常用于声明
自定义数据类型中使用。 4)minOccurs:该
属性值为一个整数,表示该声明元素最少要出现的
次数。 5)maxOccurs:该
属性值为一个整数,表示该声明元素最多能出现的
次数,如果值为unbounded,则表示无限制。 6)substitutionGroup:
属性值是一个已经定义的元素名字,表示可以使用
属性值对应的元素替换
属性归属的元素,比较少使用。 7、Schema元素group:用于定义一个元素组,将过个元素进行捆绑,元素组中的元素要么全部使用,要么全部不使用,主要
属性有: 1)name:元素组的名字; 2)ref:引用一个元素组,
属性值为已经定义的元素组名。 8、Schema元素attribute:用于声明一个
属性,子元素只能是simpleType或者annotation,主要
属性有: 1)name:声明
属性的名字; 2)type:声明
属性的数据类型,只能的简单类型,不能是复杂类型,因为
属性不能再包含一个
属性,没有
属性的
属性,只有
属性的类型; 3)ref:引用一个声明过的
属性,值为声明过的
属性名,常用在complexType元素中; 4)use:申明
属性的特点,
属性值有optional(可以出现或者不出现)、prohibited(不准使用)、
required(必须使用)。 9、Schema元素attributeGroup:用于定义一个
属性组,将多个
属性捆绑在一起,
调用一个
属性组等于同时
调用属性组里的所有
属性。主要
属性有: 1)name;
属性组的名字; 2)ref:引用一个
属性组,
属性值为已经定义的
属性组名。 10、Schema元素restriction:用于将对已存在的简单类型取值限定在一个范围内,主要
属性有base,其
属性值为一个简单类型,常用于simpleType元素中做其子元素。限定范围的
方法借用在restrict元素首尾
标签之间使用Schema其它相关元素来限定: 1)<xs:minInclusive value="value"/>,限定值必须等于或大于value。 2)<xs:maxInclusive value="value"/>,限定值必须等于或小于value。 3)<xs:minExclusive value="value"/>,限定值必须大于value。 4)<xs:maxExclusive value="value"/>,限定值必须小于value。 5)<xs:enumeration value="value"/>,可使用多次来定义一个枚举类型,限定值 必须为多个值中的一个。 ... 11、在元素首尾
标签之间定义的类型或者声明的元素和
属性,类似于Java中的匿名内部类,所以这些类型或者元素和
属性不需要name
属性,它们只能被包含它们的元素使用。这种做法也相当于将元素首尾
标签之间定义的
内容用simpleType或complexType元素定义后,再以该元素的type
属性指定。 12、声明元素的type
属性或者元素首尾
标签之间定义的东西,将根据它们的特点作为声明元素的特定组成部分。如果是元素,则作为声明元素的子元素;如果是数据类型,则作为声明元素首尾
标签之间的
内容;如果是
属性,则作为声明元素的
属性。另外,如果type类型或
标签之间的
内容是complexType类型的话,则将complexType再拆分,然后根据以上规则将complexType
内容作为声明元素特定的组成部分。