【XML】视频总结

标记语言: 用文字做标记,表达一些内容效果,携带一些数据

DTD(Document Type Definition)

1.定义了XML文件的结构,为XML文件提供语法规则
2.既可以定义在XML文件内,也可以定义在XML文件外
3.使用XML进行数据交换的行业或组织可以定义自己的DTD
4.DTD对XML是可选的内容

使用DTD原因

为了正确的交换数据,XML文件需要确定的结构

DTD的2种使用方式

XML内置DTD内容
在这里插入图片描述
DTD内容放到XML外部(专用)
单独写一个dtd文件,单独把规则拿出来
在这里插入图片描述
DTD内容放到XML外部(公用):有权威机构制定,提供给特定行业或公众使用的DTD。关键字public

XML文件构成:元素,属性,实体,PCDATA(文本内容),CDATA(原样输出内容)

元素声明: <!ELEMENT 元素名称 类别>
      <!ELEMENT 元素名称 元素内容>
在这里插入图片描述
元素(文本内容)
元素(其他子元素)

空元素声明:<!ELEMENT 元素名称 EMPTY>
      DTD中:<!ELEMENT br EMPTY>
      XML中:<br/>
带有任务内容的元素声明:<!ELEMENT 元素名称 ANY>
            DTD中:<!ELEMENT student ANY>
            XML中:<student>赵芬<student/> 带有文本内容
                 <student><name>赵芬</name></student> 包含子元素
元素中子元素的个数
只出现一次
   <!ELEMENT 元素名称 (子元素名称)>
例如:<!ELEMENT 书籍列表 (计算机书籍)>

最少出现一次
   <!ELEMENT 元素名称 (子元素名称+)>
例如:<!ELEMENT 书籍列表 (计算机书籍+)>

声明出现零次或多次的元素
   <!ELEMENT 元素名称 (子元素名称*)>
例如:<!ELEMENT 书籍列表 (计算机书籍*)>

声明出现零次或一次的元素
   <!ELEMENT 元素名称 (子元素名称?)>
例如:<!ELEMENT 书籍列表 (计算机书籍?)>

声明或
   <!ELEMENT 元素名称 (子元素名称|子元素名称)>
例如:<!ELEMENT 书籍列表 (计算机书籍|文学书籍)>

声明混合型
   <!ELEMENT 子元素名称 (#PCDATA|子元素名称)*>
例如:<!ELEMENT 书籍列表 (#PCDATA|计算机书籍)*>
在这里插入图片描述
子元素要求顺序
DTD: <!ELEMENT 计算机书籍(书名, 价格)>
     <!ELEMENT 书名(#PCDATA)>
     <!ELEMENT 价格(#PCDATA)>
XML:
  <书籍列表>
   <计算机书籍>
     <书名>J2SE书</书名>
     <价格>100</价格>
   </计算机书籍>
  </书籍列表>
子元素不要求顺序
DTD: <!ELEMENT 计算机书籍(书名| 价格)*>
     <!ELEMENT 书名(#PCDATA)>
     <!ELEMENT 价格(#PCDATA)>
XML:
  <书籍列表>
   <计算机书籍>
    <书名>J2SE书</书名>
    <价格>100</价格>
   </计算机书籍>
  </书籍列表>
重复元素
DTD: <!ELEMENT 计算机书籍(书名| 作者+)>
     <!ELEMENT 书名(#PCDATA)>
     <!ELEMENT 作者(#PCDATA)>
XML:
  <书籍列表>
   <计算机书籍>
     <书名>J2SE书</书名>
    <作者>赵芬</作者>
     <作者>田佳琪</作者>
   </计算机书籍>
  </书籍列表>
成组元素
DTD: <!ELEMENT 计算机书籍(书名| 价格)+>
     <!ELEMENT 书名(#PCDATA)>
     <!ELEMENT 价格(#PCDATA)>
XML:
  <书籍列表>
    <计算机书籍>
     <书名>J2SE书</书名>
     <价格>100</价格>
     <书名>XML书</书名>
     <价格>50</价格>
   </计算机书籍>
  </书籍列表>

XML文件构成:属性(ATTLIST)声明

语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
DTD:<!ATTLIST paymetnt type CDATA ""cash">
XML:<payment type="cash"/>
   <payment />
属性的类型
在这里插入图片描述
属性值
在这里插入图片描述
属性默认值例子
DTD:<!ELEMENT payment EMPTY>
    <!ATTLIST payment type CDATA "cash">
XML:<payment type="check"/>

属性不是必须默认值例子

<!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED>

DTD: <!ATTLIST payment type CDATA #IMPLIED>
XML:  <payment type="cash"/>
    <payment/>

属性必须为默认值例子

<!ATTLIST 元素名称 属性名称 属性类型 #REQUIRED>

DTD:  <!ATTLIST payment type CDATA #REQUIRED>
XML: <payment type="cash"/>

DTD实体

内部实体声明:<!ENTITY 实体名称 "实体的值">
DTD:
   <!ENTITY writer "Bill Gates">
   <!ENTITY copyright "Copyright jobedu,com,cn">
XML:
   <author>&writer;&copyright;</quthor>
内部实体声明:<!ENTITY 实体名称 SYSTEM "URI/URL">
DTD:
   <!ENTITY writer SYSTEM "http://www.jobedu.com.cn/dtd/person.dtd">
XML:
   <author>&writer;</quthor>
在一个xml文件中使用多个DTD文件,不同DTD文件中元素冲突,解决方法:命名空间
采用前缀标识发,在元素名和属性名前面增加一个标识,区分当前元素来自于那个DTD
在这里插入图片描述
浏览器是无法检测xml是否符合了DTD规则的。Java代码实现对xml文件的验证,是否符合DTD规则

Schema比DTD

Schema是DTD的plus替代者,用来描述XML文档的结构,被称为XML Schema Definition(XSD)
Schema使用xml语法,使用xml编写Schema不用学习新的语言,可以用XML编辑器解析器来编辑解析Schema文件
Schema作用
1.保护数据通信
2.Schema可以扩展(在其他Schema里使用)
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章