传智播客XMl比较四部曲--(二)个人总结

 1。XML的格式正规性


2。XML的格式的有效性

DTD  文档类型定义
Schema


DTD 不足:
<1> 数据类型有限
<2> 不是XML文件 ,扩展性不好


Schema验证 弥补了DTD的不足
<1> 数据类型 丰富 -〉 sqlserver中的数据类型相当
<2> 是XML文件

schema 由微软公司提出的
转交给w3c 

schema ---> W3C标准的schema规范

命名空间 ----              java中的package
一组作用相同的标记              把功能相近的类封装在一起
同名的标记区分开                   可以区分同名的类
naming space                             java.util.Date
java.sql.Date

*********************************

<!--HTML-->标记

<table>
<tr><td>苹果</td></tr>
<tr><td>香蕉</td></tr>
</table>

<!--桌子-->

<table>
<name>方桌</name>   
<height>12</height>
</table>

命名空间 namespace  ns
Date  java.util.Date
java.sql.Date  

--带命名空间
url 通常是唯一性 保证唯一性

xmlns  = xml naming space

<h:table xmlns:h="http://www.w3c.com/html4.0">
<tr><td>苹果</td></tr>
<tr><td>香蕉</td></tr>
</h:table>

xmlns xml的命名空间  h代名词  h代表这个网址"http://www.w3c.com/html4.0"
uri  资源定位符号  唯一性
url  资源地址  ---- 网络http地址  

<n:table xmlns:n="http://www.mycom.com/furniture"
xmlns:h="http://www.w3c.com/html4.0">
<name>方桌</name>   
<height h:unit="英寸">12</height>
</n:table>

子元素的命名空间默认和父元素的命名空间是一样的
保证了XML的扩展性

Html 标记不是十分严格的
<br>
<BR>
<bR>

XML + HTML == XHTML  
html4.0 -- 在XHTML中的标记必须小写

标记必须成对
<p></p>  

<p/>

<br/>


目的是来区分标记,让同名的标记可以使用


类似于java的包package
import java.sql.*;
import java.util.*;
java.util.Date
java.sql.Date                     

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

<1> Schema的命名空间是"http://www.w3.org/2001/XMLSchema"
简写为xs
<2> elementFormDefault="qualified" 元素的标记在书写的
时候的要写命名空间的标记
<xs:attribute/>
<3> attributeFormDefault="unqualified" 属性的标记不用书写
命名空间
<xs:attribute name=""/> 

<4> 根元素是schema

schema 验证XML的

和DTD对比

DTD中描述 ----> schema的描述


Schema中的数据类型:

<1> 基本的
int
decimal
date
datetime
string  


<2> 扩展的
ID
NMTOKEN
positiveInteger
negativeInteger

自定义类型 :

xs:complexType --> 元素由子元素组成或含有属性

xs:simpleType  -->  基本数据类型+限制条件


+   minOccurs="1" maxOccurs="unbounded"
?   minOccurs="0" maxOccurs="1"
*   minOccurs="0" maxOccurs="unbounded"
不写  有且仅有一个



SChema技术 ----  验证XML文件的有效性
优点:
<1>是一个XML文件 ,扩展性好
<2>数据类型丰富,还可以自定义数据类型

Schema文件的结构 ???
Schema文件由哪些内容组成???

<1>Schema文件的结构  
根元素<schema></schema>
带有命名空间xs
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"  元素前要使用xs命名空间
attributeFormDefault="unqualified"  属性名字不用使用xs命名空间
完整的
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

</xs:schema>

DTD中 元素如何定义 ?? <!ELEMENT
属性如何定义  <!ATTLIST
有哪些数据类型  元素(#PCDATA)   属性 CDATA ID IDREF

SChema中的 数据类型:(属性和元素)
a) 基本数据类型
string 字符
boolean 布尔值
decimal 小数
date    日期
datetime 日期时间
等等
b)  扩展数据类型
ID  唯一值
IDREF ID唯一值的引用
positiveinteger 正整数
negativeinteger  负整数
c)自定义数据类型
元素 + 属性 = 新元素 自定义数据类型(复杂类型complexType)
(子元素组成 或含有属性 )

基本数据类型 + 限制条件 = 自定义数据类型(简单类型simpleType)
语法:
<xs:simpleType name="">
<xs:restriction base="">
</xs:restriction>
</xs:simpleType>
图书的书号
例子1: ISBN 7-113-05064-6
Schema 内自定义数据类型来表示书号 (简单类型)

<xs:simpleType name="ISBN">
<xs:restriction base="xs:string">
<xs:pattern value="ISBN /d{1}-/d{3}-/d{5}-/d{1}"/>      
</xs:restriction>
</xs:simpleType>

<xs:pattern   模式   正则表达式

字符串的格式
/d   等于 1位数字   [0-9]
/d{2}     2位数字  00 -- 99
9/d               90 --- 99
/d{1,2}   0--- 99          



设定字符串的格式
元字符
样式                       正则表达式
"ba"  "bba" "bbba" "bbbba"        b+a
"a" "ba"                     b?a
"ba"  "bba" "bbba" "bbbba" "a"     b*a
chapter0  chapter1 chapter2       chapter/d
chapter3   ---  chapter9         
chapter0 ---- chapter99      chapter/d{1,2}
a1 b1 c1  ----- z1 A1---Z1       [a-zA-Z]1
88-0987 89-09090               /d{2}-/d{4,5}
/d  相当于 [0-9]   /s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ /f/n/r/t/v]。
/D        [^0-9]

表示2位数 但是2个数字是一样的 11, 22, 33
(/d)/1
[5335,6556]  第一个和第4个是一样的
第2个和第3个数字是一样

(/d)(/d)/2/1

子匹配               (/d)/1  [00,11,22,33,44,55]
(/d)(/d)/2/1



E-Mail格式的表示
huangchangyu@sina.com.cn

var pattern =
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(/.[a-zA-Z0-9_-])+/



[^0-9]  不是0-9的字符
^[0-9]  以字符0-9开头

JavaScript中使用


<例子1>学生考试的分数
0< 分数 <=100
<xs:simpleType name="scoretype">
<xs:restriction base="xs:decimal">
<xs:minExclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>

空元素
<xs:element name="aa"/>
any
<xs:complexType name="" mixed=true>

<xs:minInclusive value="10"/>  <!-- >= 10 and <=100-->

如何定义元素?
<1>单个元素************
<xs:element name="书号" type="ISBN"/>
<xs:simpleType name="ISBN">
<xs:restriction base="xs:string">
<xs:pattern value="ISBN /d{1}-/d{3}-/d{5}-/d{1}"/>      
</xs:restriction>
</xs:simpleType>
写XML片断
<书号>ISBN 7-113-05064-6</书号>

<2>1个元素由多个元素(子元素)组成的*********
<xs:complexType/>  复杂类型

例子  表示DTD中的
<!ELEMENT 图书  (书名,作者+,出版商,出版日期,价格)>

Schema中
<xs:element name="图书" type="booklist"/>
<xs:complexType name="booklist">
<xs:sequence>
<xs:element name="书名" type="xs:string" />
<xs:element name="作者" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="出版商" type="xs:string"/>
<xs:element name="出版日期" type="xs:date"/>
<xs:element name="价格" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>

+   <xs:element ... minOccurs="1" maxOccurs="unbounded"/>
?   <xs:element ... minOccurs="0" maxOccurs="1"/>     
*   <xs:element ... minOccurs="0" maxOccurs="unbounded"/>     
元素出现2-5次
<xs:element ... minOccurs="2" maxOccurs="5"/>     

<xs:sequence/> 表示元素出现的顺序
<xs:all/>  表示元素出现的顺序是任意的
<xs:choice/> 表示在多个元素中选择一个
<xs:choice minOccurs="1" maxOccurs="2"/> 多个元素选1-2个

<例子>   DTD <!ELEMENT 图书目录 (图书+)>
<xs:element name="图书目录" type="bookcatalog"/>
<xs:complexType name="bookcatalog">
<xs:sequence>
<xs:element ref="图书" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

Schema定义属性**********************
<xs:element>
<xs:attribute name="" type="" use=""/>
</xs:element>

use   "required"  必须的
use   "optional"  可有可无的



<例子>
<!ATTLIST 图书
销售 (是 | 否) #REQUIRED
>

Schema表示如下
<xs:attribute name="销售" type="salesattr" use="required"/>
<xs:simpleType name="salesattr">
<xs:restriction base="xs:string">
<xs:enumeration value="是"/>
<xs:enumeration value="否"/>
</xs:restriction>
</xs:simpleType>

<xs:enumeration/>  枚举类型(多个中选一个) 


<例子>  只有属性的元素
<emp empno="1234" sex="M"/>

<xs:element name="emp" type="emptype"/>
<xs:complexType name="emptype">
<xs:attribute name="empno" type="xs:integer"/>
<xs:attribute name="sex" type="xs:string"/>
</xs:complexType>

复杂类型complexType 是用于定义子元素或属性的

简单类型simpleType 定义元素 = 基本类型 + 限制条

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值