1.从xml的文档结构最高可抽象到纵横两个方面:节点 和 属性

<topnode name="top">
<midtop name="mid"/>
</topnode>

2.DTD的约束

I.对节点:

对节点的约束,很明显要做到描述 节点的结构,类型等等

<!ELEMENT NAME (TYPE)>

在DTD中所有的这些 描述都由 上面的 TYPE 完成

看描述例子:

A.<book>my book</book> ---DTD---> <!ELEMENT book (#PCDATA)>

B.<book/> ---DTD---> <!ELEMENT book EMPTY>

C.<book>
<title>mybook</title>
<author>yife</author> ---DTD---> <!ELEMENT book (title,author)>
</book>

*#PCDATA代表字符数据

不用多解释,应该能初步体会,不过现在对上面第三种情况展开:

D.<book>
<title>mybook</title>
<chapter>NO.1</chapter>
...
unknow ,the number will be change sometimes
<chapter>NO.n</chapter>
</book>

---DTD---> <!ELEMENT book (title,chapter+)>

这里给出通配表
[DEFAULT]:MUST BE 1 TIME(1)
? :MUST BE 1 TIME OR 0(1|0)
+ :1 TIMES OR MORE(1....n)
* :0 TIMES OR MORE(0....n)

E. <chapter>NO.1</chapter>
<chapter>
<havechild/>
</chapter>

---DTD---> <!ELEMENT BOOK (#PCDATA|(havechild))>

*这里符号"|"是or的含义

II.对属性:

属性是绑定在节点上的,属性没有结构描述
<!ATTILIST ELEMENT ATTRIBUTE TYPE MODIFER>

看例子:

A.<book focus="XML"/> ---DTD---> <!ATTILIST book focus CDATA #REQUIRED>

*CDATA表示是字符的
*#REQUIRED表示是必须的 #IMPLED表示可以省的 #FIX表示不能改动的

属性除了字符的,还可以是枚举的

B.<book focus="XML"/>
<book focus="JAVA"/> ---DTD---> <!ATTILIST book focus (XML|JAVA) #IMPLED>

C.<book focus="XML">me</book>
.....
<book focus="XML">you</book>

---DTD---> <!ATTILIST book focus (XML|JAVA) "XML">

*"XML"为缺省值,这是缺省的表示方法

2.Schema的约束

I.对节点:(Schema也符合xml标准)

<element name="NAME" type="TYPE" [options...]>

here TYPEs is more than DTD ,very like java

看描述例子:

A.<book>my book</book> -Schema--> <element name="book" type ="String" />

B.<book>
<title>mybook</title>
<author>yife</author>
</book>

-Schema-->

<element name="book" type ="booktype" />
<complexType name="booktype">
<element name="title" type="string">
<element name="author" type="string">
</complexType>

C.还是上个例子还可以这样写(希望可以思考一下,两种写法有什么不同)
<element name="book">
<complexType>
<element name="title" type="string">
<element name="author" type="string">
</complexType>
</element>

一个特殊的例子:

D.<author/>

-Schema-->

<element name="author">
<complexType content="booktype" />
</element>

还记得 DTD 中的<!ELEMENT book (title,chapter+)>吗?"+" 在 Schema 的表示:

E.<element name="chapter" type="String" minOccurs="1" maxOccurs="*">

其实minOccurs="1" 不是必须的 因为 默认值是1

II.对属性:

<attribute name="NAME" type="TYPE" [options]>

看例子:

A.<book focus="XML"/>

-Schema-->

<element name="book">
<complexType>
<attribute name="focus" type="string" />
</complexType>
</element>

*attribute在这里看来是 complextype 里的一个条目.

Schema 里没有 #REUQIRED 所以 为了表示 这个含义:

B.<attribute name="focus" type="string" minOccurs="1" />

与表示节点不同,这里minOccurs 的默认值是 0.

C.<attribute name="focus" type="string" default="xml" /> 默认值的表示方法

D.schema 表示 <!ATTILIST book focus (XML|JAVA) "XML">

<attribute name="focus" >
<simpleType base="string">
<enumeration value="XML">
<enumeration value="JAVA">
</simpleType>
</attribute>

3.xml 使用:

Schema:
<book xmlns:xsi="http://www.w3.org/1999/XMLSchema/instance"
xmlns="you name space"
xsi:schemaLocation="you xsd file location "
>

DTD:
<!DOCTYPE book SYSTEM "PATH TO DTD file">

转载于:https://www.cnblogs.com/leonjoon/archive/2006/09/27/515826.html

XML:DTD:Schema相关推荐

  1. XML DTD Schema 学习-Schema 介绍

    Schema 介绍: 有人会问,DTD和Schema都是对XML文档的一种约束,为什么不就选其中之一,而又有Sche ma呢.因为DTD安全度太低了,也就是说它的约束定义能力不足,无法对XML实例文档 ...

  2. XML约束——Schema约束

    XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...

  3. XML DTD 语言学习笔记

    -XML DTD 全称:Document Type Definition 简介:用于定义文档的合法性.它定义了文档应该有哪些元素及其属性,还有其他一些约束性规则. 注意:DTD语言定义的文档类型是SG ...

  4. XML —— DTD介绍

    一.DTD介绍 Document Type Definition: DTD是一种XML的约束方式,除了此种约束方式外,还有XSchema,XSchema比DTD的约束能力还要强,因此DTD正在逐渐淘汰 ...

  5. XML:Schema、三种编写Schema的方式

    针对DTD文件的不足之处:(不能出现相同名称的元素,DTD的语法不是xml的语法)出现的Schema,需要使用什么命名空间的东西就先引入,使用xmlns,后面加后缀,不加就不用后缀 定义Schema文 ...

  6. 【XML和Schema】Schema简介+简单定义和创建+连接到XML使用

    Schema的简单介绍 和DTD一样,是对XML的约束.不一样的是,Schema是基于XML语言规范的,并且相比于DTD,它包括了所有DTD能实现的功能,而且大大扩充了数据类型,扩展性强.可对整个XM ...

  7. xml之schema约束

    前言 schema约束的定义 将dtd文件引入到xml文档中 前言 在这里我们介绍了xml之tdt约束,但是这种约束没法约束属性的值,比如age属性我想限制只能是数字,那就不行了,所以我们这里介绍sc ...

  8. XML DTD用法【转载】

    简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 内部的 DOCTYPE 声明 假 ...

  9. xml dtd 约束建立xml文档

    web-app_2_3.dtd <?xml version="1.0" encoding="UTF-8"?> <!--<!DOCTYPE ...

最新文章

  1. mysql分页limit运算,MySQL的limit分页查询及性能问题
  2. Windows10避开注册的方式安装sourceTree,Failed to connect to github.com port 443: Timed out问题解决
  3. slider控件控制文本框字体大小
  4. “约见”面试官系列之常见面试题之第五十六篇之typeof返回的数据类型(建议收藏)
  5. 简约至上,美炸天的Vue圆环菜单组件
  6. 计量科学大数据分级分类
  7. 数据统计的视觉盛宴---visifire charts
  8. 易语言中关于成员变量的声明
  9. dds通信中间件_车内的中间件协议:是面向服务,还是以数据为中心,或是RESTful?...
  10. python cms应用生成_Django:之ORM、CMS和二维码生成
  11. Ubuntu20.04 安装CUDA驱动和一些系统配置
  12. VOIP流中使用CNN-LSTM下对QIM的隐写分析方法
  13. 华数机器人旋转编程_华数机器人HRT-6-Ⅰ型示教器操作与编程.ppt
  14. Centos7.5 BCM4322无线网卡驱动安装踩坑记录
  15. 小米15.6笔记本安装UBUNTU18.04 无WIFI驱动解决方法
  16. python空间点赞_用Python登录好友QQ空间点赞
  17. Vue子组件绑定事件无效
  18. 数通基础-STP原理
  19. 图文详解!java开发面试简历模板java
  20. 免费!ChatDOC文档阅读工具;AI电影美翻了;ChatGPT插件开发指南;Prompt编写模式速查 | ShowMeAI日报

热门文章

  1. 一个html数据编辑模板
  2. python偏函数理解_Python中的偏函数
  3. mysql sql查询json数据类型_SQL中的JSON数据类型
  4. Nginx跨域解决方案
  5. 华为鸿蒙OS Beta3,华为鸿蒙HarmonyOS Beta3 2.0.0.101安装包-华为鸿蒙HarmonyOS Beta3官网版v2.0.0.101...
  6. python列表json_python-带有列表的JSON_normalize JSON文件包含字...
  7. 双代号网络图节点编号原则_难倒一片的双代号网络图你学会了吗?
  8. 鸿蒙HI3516-HAP的编译-2021426
  9. uni-app 七牛云上传文件
  10. python列表转dict