XML

学过 HTML?
<html> ----> 标记
xml 语法标记语言 <xxx>
html 展示网页数据  ----- 网页
xml 传输、存储数据  ----- 数据

<html>
<head></head>
<body></body>
</html> ---- 已经赋予了一些特定的含义

<book>

人(姓名,邮件,手机,住址)
公司(人)

<Company>
 <Person>
  <name>王五</name>
  <email>wangwu@itcast.cn</email>
  <tel>13812345678</tel>
  <address>北京</address>
 </Person>
</Company>

文档声明 <?xml ?>
IE5.0 浏览器 很好XML 校验
Eclipse行 桌面 不行???
开发工具 IDE 自动修订编码
记事本 手动设定编码 另存为

standalone="yes"  表示 xml文件独立
DTD 从当前文件内部查找

standalone="no" 表示xml文件不独立
DTD 从当前文件外部查找

XML文档规范性约束
1、元素(标签)必须结束
<p>hello 段落 有效 --- xml <p>hello</p>
<br> 换行 ---- xml <br />
2、标签必须保持一致的嵌套顺序
3、xml文件只能有一个根元素
4、xml 空格、换行会保留
<p>hello java</p>
<p>      x
m
l
</p>
html 空格会被优化后去掉,不保留空格

<books><book><name>think in java</name><price>98.0</price></book></books>
5、区分大小写 <P> </p>
<b'ook></b'ook>
6、xml 属性值必须写"或者'
<body bgcolor=red> 可以 ----> xml <body bgcolor="red"> <body bgcolor='red'>
属性和子元素是一样的
<Company>
 <Person>
  <name>王五</name>
  <email>wangwu@itcast.cn</email>
  <tel>13812345678</tel>
  <address>北京</address>
 </Person>
</Company>

<Company>
 <Person name="王五" email="wangwu@itcast.cn" />
</Company>

xml 注释快捷键 ctrl+shift+c

<![CDATA[  ....  ]]>
< 标签开始  &lt; --- less than
> 标签结束  &gt; --- greater than
" ' 属性值
&

s = "aaa?bb?cc"
s.split("\\?");


DTD 传统的技术 XML出现之后 ---- 早期的XML约束技术   早期的框架 使用DTD来约束XML
Schema 新技术 出现取代DTD技术
DTD简单的,功能弱的约束 Schema复杂的,功能强大的约束

IE 浏览器 识别XML,校验
IE自动提供验证XML是否满足DTD约束的方法

1、内部DTD standalone="yes" 设置文档独立
<!DOCTYPE 书架 [   // 书架 根节点
 <!ELEMENT 书架 (书+)>  // 书架 元素 书+ 多本书
 <!ELEMENT 书 (书名,作者,售价)> // 书 元素 书名,作者,售价
 <!ELEMENT 书名 (#PCDATA)> // 书名 元素 #PCDATA 任意字符串
 <!ELEMENT 作者 (#PCDATA)>
 <!ELEMENT 售价 (#PCDATA)>
]>
2、外部DTD standalone="no" 设置文档不独立
<!DOCTYPE 书架 SYSTEM “book.dtd”>
<!DOCTYPE > 固定了格式
书架 根节点
SYSTEM 表明你使用的是本机的外部DTD
"book.dtd" DTD文件路径
3、公共DTD
<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<!DOCTYPE > 固定了格式
web-app 根节点
PUBLIC 表明你使用了一个公共的DTD
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" DTD名称
"http://java.sun.com/dtd/web-app_2_3.dtd" DTD文件网络路径

元素定义
元素嵌套
<!ELEMENT books (book+) > 定义了一个元素books,books里面子元素book,+ 最少出现一次
<!ELEMENT books ((book|tag),(name|price)) > books () 表示books 子元素 books(a,b) books子元素a,b 顺序
books((book|tag)) 分组 表示books子元素可以是book或者是tag

元素内部类型
1、#PCDATA
2、EMPTY
3、ANY
4、元素嵌套

属性定义
 <!ATTLIST book
  bid
 >
bid 类型应该指定什么?
bid是不是唯一的 类型ID
bid不是唯一的,可以是任意字符串 CDATA

类型ID 约束#REQUIRED *** 值不能以数字开始!!
类型CDATA  约束#IMPLIED --可以不写的属性
类型CDATA 约束#FIXED "value1"
类型CDATA 约束Default value 例如: 姓名 CDATA "xxx"

实体定义
有一部分数据 需要复用 定义为实体

引用实体
当你的元素或者属性中,有重复的内容 可以通过引用实体来复用

参数实体 (必须在DTD中)
当你的多个实体的内容中有重复的内容,可以通过参数实体来复用

Schema 和 DTD
Schema 约束 使用 XML语法
Schema 数据类型非常丰富
Schema 引用 Namespace 命名空间

XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd
约束文档 .xsd XML文件
实例文档 .xml XML文件
我们需要为自定义.xsd 元素指定一个命名空间!

<books>
 <book>
  <id>101</id>
  <name>think in java</name>
 </book>
</books>

简单类型元素 :id name
复杂类型元素 :books book


<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/book"
xmlns:tns="http://www.example.org/book" --- 最后讲
elementFormDefault="qualified">

</schema>

我们要定义一个Schema文档 语法
<!ELEMENT <!ATTLISt <!ENTITY
1、xmlns="http://www.w3.org/2001/XMLSchema"  <----- 定义一个Schema文档 语法
2、使用http://www.w3.org/2001/XMLSchema里面提供语法 创建简单类型元素、创建复杂类型元素
3、自定义元素(简单、复杂) 为它指定一个 Namespace  ---- >targetNamespace="http://www.example.org/book"


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://www. itcast.cn"
       elementFormDefault="qualified">
我现在是不是要使用http://www.w3.org/2001/XMLSchema提供好的语法定义元素
xmlns:xs = " ....... " 命名空间声明 可以有前缀 也可以没有
没有指定前缀命名空间声明: 默认命名空间声明 xmln = "..."

当你在Schema ALT+/ 显示所有可以使用标签
Schema 用来定义元素的 显示的http://www.w3.org/2001/XMLSchema 定义的标签

复杂类型元素 :有子元素的元素
<element>
 <complexType>
   <sequence>
   </sequence>
 </complexType>
</element>
简单类型元素:没有子元素
<element name="名称" type="类型"></element>


命名空间
Schema:
<schema xmlns="http://www.w3.org/2001/XMLSchema"  ----> 指定当前schema 文件默认命名空间 http://www.w3.org/2001/XMLSchema
 targetNamespace="http://www. itcast.cn" ---- > 指定当前Schema文件定义简单.复杂的类型元素属于哪个命名空间
elementFormDefault="qualified">

XML:
<itcast:书架 xmlns:itcast="http://www.itcast.cn" ---> 指定使用itcast前缀元素来自哪个命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ---> 固定的 指定该xml文档是一个受Schema约束的文档
xsi --- > XML Schema Instance
xsi:schemaLocation="http://www.itcast.cn book.xsd    ---> http://www.itcast.cn 命名空间 对应的 Schema文件在哪 book.xsd
http://www.mytest.cn user.xsd "> ----> http://www.mytest.cn 命名空间 对应Schema在哪

xsi:schemaLocation---> Xml schema instance 位置


不使用命名空间例子
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="xmlbook.xsd">
 <书>
  <书名>JavaScript网页开发</书名>
  <作者>张孝祥</作者>
  <售价>28.00元</售价>
 </书>
</书架>

xmlbook.xsd
<schema xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">


http://www.w3.org/2001/XMLSchema 提供了定义所有元素标记

设定子元素出现的次数
<element name="orderItem"></element>
maxOccurs="1" 最大出现次数
minOccurs="1" 最小出现次数

Schema
1.要使用官方提供元素 定义自己使用 简单、复杂类型元素 xmlns="http://www.w3.org/2001/XMLSchema"
2.定义完成自己的元素 为它们指定一个 命名空间  targetNamespace="http://www.itcast.cn"

XML
1. 编写根元素 同时指定根元素来自 命名空间 xmlns="http://www.itcast.cn"
2. 声明这是一个XML Schema 实例 xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
3. 指定元素来自命名空间 在哪个 Schema文件里  xsi:schemaLocation ="http://www.itcast.cn demo.xsd"

posted on 2013-06-22 12:35  笨'小孩  阅读(244)  评论(0编辑  收藏  举报

导航