xml学习笔记——dtd和schema

 

XML是一种用作网络数据传输的语言,它不同于HTML,HTML主要用来表现数据,而XML主要用来传输数据。

XML的知识点很多,它是一门比较复杂的语言。在这里要谈的只是冰山一角——XML的两种文档定义类型DTD和Schema

1、为什么要用DTD(Document Type Definition)和Schema

用过XML的都知道,常见XML里无非是一些节点标签。而这些标签的定义是用户自己定义的。这样在传输数据的时候,就会出现甲方读和乙方的XML表达格式不一样的情况,虽然要表达的内容是一样的,但是可能两个节点的顺序不一样。由此,定义了DTD和Schema规范,通过这种规范来验证XML书写是否规范化,这样达到统一编写和规范化的目的。这两种都被W3C作为标准规范。

 

2、什么叫有效的XML?

如果一个XML文档规定其文档类型和数据结构的DTD或者Schema,并且与之关联,并且校验正确,则此文档是有效的。
 
3、DTD和SCHEMA的区别
XML从SGML中继承了DTD,并用它来定义内容的模型,验证和组织元素。同时,它也有很多局限:
–DTD不遵守XML语法;
–DTD不可扩展;
–DTD不支持命名空间的应用;
–DTD没有提供强大的数据类型支持,只能表示很简单的数据类型。
Schema完全克服了这些弱点,使得基于Web的应用系统交换XML数据更为容易。下面是它所展现的一些新特性:
–Schema完全基于XML语法,不需要再学习特殊的语法;
–Schema能用处理XML文档的工具处理,而不需要特殊的工具;
–Schema大大扩充了数据类型,支持booleans、numbers、dates and times、URIs、integers、decimal numbers和real numbers等;
–Schema支持原型,也就是元素的继承。如:我们定义了一个“联系人”数据类型,然后可以根据它产生“朋友联系人”和“客户联系”两种数据类型;
–Schema支持属性组。我们一般声明一些公共属性,然后可以应用于所有的元素,属性组允许把元素、属性关系放于外部定义、组合;
–开放性。原来的DTD只能有一个DTD应用于一个XML文档,现在可以有多个Schema运用于一个XML文档。

 

4、DTD举例

<!-- 这是一个DTD文件-->

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Students (Student+)>
<!ELEMENT Student (name,age,email*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ATTLIST Student
 sid ID #REQUIRED
>

<!--这是一个根据上面的DTD文件编写的XML文件-->

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Students SYSTEM "student.dtd">
<Students>
 <Student sid="123">
  <name>Ziccy</name>
  <age>20</age>
  <email>ZICCY@hotmail.com</email>
 </Student>
 <Student sid="111">
  <name>Lisa</name>
  <age>19</age>
  <email>Lay@hotmail.com</email>
 </Student>
</Students>

 

5、Schema举例

<!--这是一个Schema规范文件-->

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="
http://www.w3.org/2001/XMLSchema"
targetNamespace="
http://www.example.org/student"
xmlns:tns="
http://www.example.org/student"
elementFormDefault="qualified">
<element name="Students">
 <complexType>
   <sequence>
     <element name="Student" minOccurs="1" maxOccurs="2">
       <complexType>
         <sequence>
           <element name="name" type="string"></element>
           <element name="age" type="int"></element>
           <element name="gender" type="string"></element>
         </sequence>
         <attribute name="sid" type="ID" use="required"></attribute>
       </complexType>
     </element>
   </sequence>
 </complexType>
</element>
</schema>

<!--这是一个根据Schema文件编写XML-->

<?xml version="1.0" encoding="UTF-8"?>
<Students xmlns="
http://www.example.org/student"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.example.org/student student.xsd">
 <Student sid="n1">
   <name>Jasper</name>
   <age>22</age>
   <gender>M</gender>
 </Student>
 <Student sid="n2">
   <name>Ziccy</name>
   <age>22</age>
   <gender>F</gender>
 </Student>
</Students>

 

以上总结都是很基础的DTD和Schema举例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值