XML:DTD:Schema
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相关推荐
- XML DTD Schema 学习-Schema 介绍
Schema 介绍: 有人会问,DTD和Schema都是对XML文档的一种约束,为什么不就选其中之一,而又有Sche ma呢.因为DTD安全度太低了,也就是说它的约束定义能力不足,无法对XML实例文档 ...
- XML约束——Schema约束
XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...
- XML DTD 语言学习笔记
-XML DTD 全称:Document Type Definition 简介:用于定义文档的合法性.它定义了文档应该有哪些元素及其属性,还有其他一些约束性规则. 注意:DTD语言定义的文档类型是SG ...
- XML —— DTD介绍
一.DTD介绍 Document Type Definition: DTD是一种XML的约束方式,除了此种约束方式外,还有XSchema,XSchema比DTD的约束能力还要强,因此DTD正在逐渐淘汰 ...
- XML:Schema、三种编写Schema的方式
针对DTD文件的不足之处:(不能出现相同名称的元素,DTD的语法不是xml的语法)出现的Schema,需要使用什么命名空间的东西就先引入,使用xmlns,后面加后缀,不加就不用后缀 定义Schema文 ...
- 【XML和Schema】Schema简介+简单定义和创建+连接到XML使用
Schema的简单介绍 和DTD一样,是对XML的约束.不一样的是,Schema是基于XML语言规范的,并且相比于DTD,它包括了所有DTD能实现的功能,而且大大扩充了数据类型,扩展性强.可对整个XM ...
- xml之schema约束
前言 schema约束的定义 将dtd文件引入到xml文档中 前言 在这里我们介绍了xml之tdt约束,但是这种约束没法约束属性的值,比如age属性我想限制只能是数字,那就不行了,所以我们这里介绍sc ...
- XML DTD用法【转载】
简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 内部的 DOCTYPE 声明 假 ...
- xml dtd 约束建立xml文档
web-app_2_3.dtd <?xml version="1.0" encoding="UTF-8"?> <!--<!DOCTYPE ...
最新文章
- mysql分页limit运算,MySQL的limit分页查询及性能问题
- Windows10避开注册的方式安装sourceTree,Failed to connect to github.com port 443: Timed out问题解决
- slider控件控制文本框字体大小
- “约见”面试官系列之常见面试题之第五十六篇之typeof返回的数据类型(建议收藏)
- 简约至上,美炸天的Vue圆环菜单组件
- 计量科学大数据分级分类
- 数据统计的视觉盛宴---visifire charts
- 易语言中关于成员变量的声明
- dds通信中间件_车内的中间件协议:是面向服务,还是以数据为中心,或是RESTful?...
- python cms应用生成_Django:之ORM、CMS和二维码生成
- Ubuntu20.04 安装CUDA驱动和一些系统配置
- VOIP流中使用CNN-LSTM下对QIM的隐写分析方法
- 华数机器人旋转编程_华数机器人HRT-6-Ⅰ型示教器操作与编程.ppt
- Centos7.5 BCM4322无线网卡驱动安装踩坑记录
- 小米15.6笔记本安装UBUNTU18.04 无WIFI驱动解决方法
- python空间点赞_用Python登录好友QQ空间点赞
- Vue子组件绑定事件无效
- 数通基础-STP原理
- 图文详解!java开发面试简历模板java
- 免费!ChatDOC文档阅读工具;AI电影美翻了;ChatGPT插件开发指南;Prompt编写模式速查 | ShowMeAI日报
热门文章
- 一个html数据编辑模板
- python偏函数理解_Python中的偏函数
- mysql sql查询json数据类型_SQL中的JSON数据类型
- Nginx跨域解决方案
- 华为鸿蒙OS Beta3,华为鸿蒙HarmonyOS Beta3 2.0.0.101安装包-华为鸿蒙HarmonyOS Beta3官网版v2.0.0.101...
- python列表json_python-带有列表的JSON_normalize JSON文件包含字...
- 双代号网络图节点编号原则_难倒一片的双代号网络图你学会了吗?
- 鸿蒙HI3516-HAP的编译-2021426
- uni-app 七牛云上传文件
- python列表转dict