XML---DTD,Schema

目录

DTD(Document Type Definition)

为什么要使用DTD

DTD存储类型

XML内置DTD内容:

外部DTD:

DTD元素

DTD属性

DTD实体

解决命名冲突

命名空间:

前缀标识法:

Schema

Schema优势

格式:


DTD(Document Type Definition)

  • 定义XML文件的结构
  • 为XML文件提供语法与规则
  • 内容既可以定义在XML文件中,也可以定义在XML文件之外
  • 使用XML进行数据交换的行业或组织可定义自己的DTD
  • DTD对于XML是可选的内容

为什么要使用DTD

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

DTD存储类型

  • XML内置DTD内容
  • 外部DTD

XML内置DTD内容:

<!--XML声明-->
<?xml version="1.0" encoding="utf-8"?>

<!--XML内置DTD内容-->
<!DOCTYOE 书籍列表[
    <!ELEMENT 书籍列表(计算机书籍)*>
    <!ELEMENT 计算机书籍(书名,价格,简要介绍)>    <!--计算机数据目录下由3个元素-->
    <!ELEMENT 书名(#PCDATA)>                      <!--书名下面是内容,没有元素了-->
    <!ELEMENT 价格(#PCDATA)>
    <!ELEMENT 简要介绍(#PCDATA)>
]>
<!--元素-->
<书籍列表>        <!--根元素-->
    <计算机书籍>  <!--子元素-->
        <书名>XML大全</书名>
        <价格>20</价格>
        <简要介绍>这本书讲解了数据的传输<简要介绍>
    </计算机书籍>
</书籍列表>

外部DTD:

  • 每个XML文档单独定义的DTD可推广为一个系统内共享的公用DTD
  • 关键字SYSTEM用于引用一个作者或组织所编写的众多XML文档中通用的DTD
<!DOCTYPE 实体名称 SYSTEM "URL/URI">
  • 另一种外部DTD,一个由权威机构制定的,提供给特定行业或公众使用的DTD,关键字是PUBLIC
<!DOCTYPE 实体名称 PUBLIC "URL/URI">

DTD元素

(空元素、带有任何内容的元素、出现元素的个数、元素出现的顺序)

<!ELEMENT 元素名称 类别>
<!ELEMENT 元素名称(元素内容)>
例子:
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 计算机书籍(书名,价格,简要介绍)>

DTD属性

(不同的属性类型,来限制属性,属性的默认值)

属性通过ATTLIST来进行声明

<!ATTLIST 元素名称 属性名称 属性类型 默认值>
例子:
DTD文件中
<!ATTLIST payment type CDATA "cash">
XML文件中
<payment type="cash"/>

DTD实体

外部实体声明

DTD文件中:
<!ENTITY 实体名称 SYSTEM “URL/URI”>
XML文件中,得到实体的值
<author>&实体名称;</author>

解决命名冲突

命名空间:

  • 在一个XML文档中,包含由多个DTD描述的元素,会出现名称冲突问题
  • 为了解决名称冲突问题,W3C的XML小组制定了被称为命名空间(NameSpace)的标准

前缀标识法:

在元素名和属性名前面增加一个标识,以唯一区分当前元素或属性来自哪一个DTD

Schema

  • 描述XML结构
  • 基于XML的DTD替代者
  • 比DTD强大
  • 使用XML语法
  • 可使用XML编译器来编辑Schema文件
  • 可使用XML解析器来解析Schema文件
  • Schema可保护数据通信(例如各个国家的时间格式不一样,可以用Schema统一,双方获得相同内容的“期望值”)
  • Schema可扩展(在其他的Schema中重复使用你的Schema,在相同的文档中引用多重的Schema)

Schema优势

  • 可针对未来的需求进行扩展
  • 更完善,功能更强大
  • 基于XML编写
  • 支持数据类型

格式:

<!--<schema>元素是Schema文件的根元素,可以起其他名字,显示schema中用到的元素和数据类型来自命名空间http://www.w3.org/xmlschema,同时还规定了来自该命名空间的元素和数据类型应该使用前缀xs-->
<schema xmlns:xs="http://www.w3.org/xmlschema">    
    <xs:elment name="email">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="to" type="xs:string"><.xs:element>
                <xs:element name="to" type="xs:string"><.xs:element>
                <xs:element name="to" type="xs:string"><.xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:elment>
</schema>

发布了122 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lclcsdnblink/article/details/104030502