1.XML声明:
<?xml version="1.0" encoding="GBK" standalone="yes"?>
|
standalone是可选的,用于指定文档是否引用外部资源
2.CDATA
在CDATA内部的所有内容都会被解析器忽略,如果文本包含了很多的"<"字符和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中,一个 CDATA 部件以""标记结束
<script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1 } else { return 0 } } ]]> </script>
|
文本和实体:
不合法的XML字符必须被替换为相应的实体
如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:
为了避免出现这种情况,必须将字符"<" 转换成实体,象下面这样:
下面是五个在XML文档中预定义好的实体:
< |
< |
小于号 |
> |
> |
大于号 |
& |
& |
和 |
' |
' |
单引号 |
" |
" |
双引号 |
实体必须以符号"&"开头,以符号";"结尾。
3.XML命名空间
例如:
<?xml version="1.0" encoding="GBK"?> <!-- 此XML文档描述一个电影库 --> <library xmlns=""> <电影 id="1"> <名字>投名状</名字> <格式>DVD</格式> </电影> <电影 id="2"> <名字>集结号</名字> <格式>VCD</格式> </电影> </library>
|
4.文档类型定义
文档类型定义也叫DTD文件,用于规范XML文档文件的标准!一个完整的DTD文件如下:
<?xml version="1.0" encoding="GBK"?> <!ELEMENT 根元素(所包含的子元素)> <!ELEMENT 子元素(所包含的元素)> <!ATTLIST 需要增加属性的元素 属性名称 属性类型 默认值> <!ENTITY 实体名称 “实体值”>
|
声明元素类型:
|
无符号白哦是此元素至少出现一次 |
? |
规定元素为可选,如果出现只能出现一次 |
+ |
规定元素至少出现一次 |
, |
规定子元素出现的顺序 |
| |
允许从一组元素中选一个元素 |
() |
将内容标记为一组 |
* |
规定元素为可选,如果出现多次或者零次 |
如果是空元素则定义如下:
如果元素中的内容是文本,定义如下:
19-1.xml
<?xml version="1.0" encoding="GBK"?> <!-- 此XML文档描述一个电影库 --> <library> <电影 id="1"> <名字>投名状</名字> <格式>DVD</格式> </电影> <电影 id="2"> <名字>集结号</名字> <格式>VCD</格式> </电影> </library>
19-3.dtd: <?xml version="1.0" encoding="GBK"?> <!ELEMENT library (电影+)> <!ELEMENT 电影 (名字,格式)> <!ATTLIST 电影 id ID #REQUIRED> <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 格式 (#PCDATA)>
|
声明属性列表:
默认值参数如下:
#REQUIRED 属性值是必须的
#IMPLED 属性不是必须的
#FIXED value:属性值为固定的value值,value由自己设定值
为19-3.dtd增加DTD文档声明属性:
<?xml version="1.0" encoding="GBK"?> <!ELEMENT library (电影+)> <!ELEMENT 电影 (名字,格式)> <!ATTLIST 电影 id ID #REQUIRED> <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 格式 (#PCDATA)>
|
声明实体:
实体名称是任意用来表示实体值的字符,实体值是用来被表示的值。例如:
在xml中用一下方式引用:&tmz
在xml中关联DTD文档:
引用方式:
嵌套方式:
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE 根元素 [ <!ELEMENT library (电影+)> <!ELEMENT 电影 (名字,格式)> <!ATTLIST 电影 id ID #REQUIRED> <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 格式 (#PCDATA)> ]> <!-- 此XML文档描述一个电影库 --> <library> <电影 id="1"> <名字>投名状</名字> <格式>DVD</格式> </电影> <电影 id="2"> <名字>集结号</名字> <格式>VCD</格式> </电影> </library>
|
XML Schema
定义xml文档的合法构建模块,也称为xml模式。
xs:string 字符串类型
xs:decimal 十进制数据类型
xs:integer 整数类型
xs:boolean 布尔类型
xs:date 日期类型
xs:time 时间类型
19-6.xml
<?xml version="1.0" encoding="GBK"?> <!--为下面的XML元素增加简单元素--> <root> <name>Tom</name> <age>DVD</age> <born>1981-02-14</born> </root>
19-6.xsd <?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="name" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="born" type="xs:date"/> </xs:schema>
|
定义XSD属性
指定默认属性值:
指定固定属性值:
在属性没有指定为必须的时候,默认为可选,指定属性为必须的
定义xsd限定xml内容:例子:
19-7.xsd
<?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="size"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:schema>
|
定义xsd复合元素
为19-8.xml定义文档声明xsd复合空元素:
19-8.xml
<?xml version="1.0" encoding="GBK" ?> <id id="1"/>
19-8.xsd <?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="id" type="idtype"/> <xs:complexType name="idtype"> <xs:attribute name="id" type="xs:positiveInteger"/> </xs:complexType> </xs:schema>
|
为19-9.xml声明xsd仅含元素的元素:
<?xml version="1.0" encoding="GBK" ?> <person> <id>1</id> <name>Tom</name> </person>
?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="person" type="persontype"/> <xs:complexType name="persontype"> <xs:sequence> <xs:element name="id" type="xs:integer"/> <xs:element name="name" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema>
|
为19-10.xml声明xsd仅含文本的元素:
<?xml version="1.0" encoding="GBK" ?> <size color="red">41</size>
<?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="size" type="shoetype"/> <xs:complexType name="shoetype"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="color" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:schema>
|
为19-11.xml文档声明xsd混合元素:
<?xml version="1.0" encoding="GBK" ?> <letter> Dear <name>Jack</name>, Hello. <myname>Tom</myname> </letter>
<?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="letter" type="lettertype"/> <xs:complexType name="lettertype" mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="myname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema>
|
xsd的元素:是开发者有能力通过未被schena规定的元素来拓展xml文档。通过any元素让开发者在xml文档中增加新的元素,新的元素可以使用xml Schema进行描述
使用any来拓展xml文档:
<?xml version="1.0" encoding="GBK" ?> <persons> <person> <id>1</id> <name>Tom</name> <gender>male</gender> </person> <person> <id>2</id> <name>Jack</name> </person> </persons>
<?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="person" type="persontype"/> <xs:complexType name="persontype"> <xs:sequence> <xs:element name="id" type="xs:integer"/> <xs:element name="name" type="xs:string"/> <xs:any minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:schema>
|
xsd的元素:
是用来扩展未被Schema规定的元素,而是未被规定的属性:
<?xml version="1.0" encoding="GBK" ?> <person> <id id="1">1</id> <name gender="male">Tom</name> </person>
<?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="person" type="persontype"/> <xs:complexType name="persontype"> <xs:sequence> <xs:element name="id" type="xs:integer"/> <xs:element name="name" type="xs:string"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:schema>
|
在xml文档中引用xsd:
<元素 xmlns=
xsi:noNamespaceSchemaLocation="URI/URL">
URI/URL指定xsd文件
19-4.xml
<?xml version="1.0" encoding="GBK"?> <!-- 此XML文档描述一个电影库 --> <library xmlns:xsi="-instance" xsi:noNamespaceSchemaLocation="19-14.xsd"> <电影 id="1"> <名字>投名状</名字> <格式>DVD</格式> </电影> <电影 id="2"> <名字>集结号</名字> <格式>VCD</格式> </电影> </library>
19-4.xsd <?xml version="1.0" encoding="GBK" ?> <xs:schema xmlns:xs=""> <xs:element name="电影" type="movietype"/> <xs:complexType name="movietype"> <xs:extension base="xs:integer"> <xs:attribute name="id" type="xs:integer"/> </xs:extension> <xs:sequence> <xs:element name="名字" type="xs:string"/> <xs:element name="格式" type="xs:string"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:schema>
|
阅读(1575) | 评论(0) | 转发(0) |