1.DTD官方教程

##2.xml约束技术:
DTD约束:语法相对简单,功能也相对简单。先出现
Schema约束:语法相对复杂,功能也相对强大。采用和xml语法类似的编写方式,Schema约束出现就是为了替换DTD约束。

3.DTD简介:

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

3.1导入DTD的方式:

1.内部导入:

<code>#导入方式:<!DOCTYPE root-element [element-declarations]>#实例:<?xml version="1.0"?><!DOCTYPE note [<!ELEMENT note (to,from,heading,body)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)>]><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend</body></note></code>
(第二行)定义此文档是 note(根标签) 类型的文档。<br>(第三行)定义 note 元素有四个元素(标签):"to、from、heading,、body"<br>(第四行)定义 to 元素为 "#PCDATA" 类型<br>(第五行)定义 frome 元素为 "#PCDATA" 类型<br>(第六行)定义 heading 元素为 "#PCDATA" 类型<br><p>(第七行)定义 body 元素为 "#PCDATA" 类型</p><p>外部导入方式:<br>  本地文件:</p><pre class="brush:xml;"><code>#导入方式: <!DOCTYPE note SYSTEM "note.dtd">#note.dtd文件内容:<!ELEMENT note (to,from,heading,body)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)></code></pre><p>  公共的外部导入:一般项目采用公共外部导入,比如ssh的xml文件基本上就是采用了这种方式</p><pre class="brush:xml;"><code>#导入方式: <!DOCTYPE 根元素 PUBLIC "http://rlovep.com/peace.dtd">#如hibernate.cfg.xml:<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"></code></pre><h3>3.2DTD语法:</h3><p>  1.约束标签<br> 语法:</p><pre class="brush:xml;"><code> <!ELEMENT 元素名称 类别>  或 <!ELEMENT 元素名称 (元素内容)></code></pre> 类别:<br>空标签: EMPTY。 表示元素一定是空元素.例如:<bb/>:<!--ELEMENT bb EMPTY--><br>普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。例如:<!--ELEMENT to (#PCDATA)--><br><p>任何内容: ANY。表示元素的内容可以是任意内容(包括子标签) 例如:<!--ELEMENT note ANY--></p>

元素内容:

<code>顺序问题:<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>: 按顺序出现子标签 次数问题:标签  :  必须且只出现1次。标签+ : 至少出现1次标签*  : 0或n次。标签? : 0 或1次。声明"非.../既..."类型的内容</code>

2.约束属性:
语法:

<code><!ATTLIST 元素名称 属性名称 属性类型 默认值></code>

属性类型:

<code>CDATA :表示普通字符串(en1|en2|..): 表示一定是任选其中的一个值ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头</code>

默认值:

<code>#REQUIRED 属性值是必需的#IMPLIED   属性不是必需的#FIXED value 属性不是必须的,但属性值是固定的</code>

3.3测试如下,请细看注释:

<code><?xml version="1.0"?><!DOCTYPE note [<!ELEMENT note (to,from+,heading*,body?,(br|b))><!--带有子序列的元素,需要按照先后顺序出现;    to只能出现一次    from最少出现一次    heading次数随意    body出现零次或者一次    非出现br就出现b--><!--元素约束--><!ELEMENT to (#PCDATA)><!--pcdata元素--><!ELEMENT from ANY><!--任何内容的元素--><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)><!ELEMENT br EMPTY><!--空元素--><!ELEMENT b EMPTY><!--空元素--><!--属性约束--><!ATTLIST to number CDATA #REQUIRED><!--必须有属性值出现,且属性值类型为字符串--><!ATTLIST from length CDATA "10"><!--默认属性值,不写出属性时属性值为10--><!--假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词 #IMPLIED。--><!ATTLIST heading length CDATA #IMPLIED><!ATTLIST body length CDATA #FIXED "123"><!--属性拥有固定的值,并不允许作者改变这个值--><!ATTLIST br type (check|cash) "cash"><!--属性值可以为check和cash中的一个-->]><note><to number="1234">Tove</to><from>Jani</from><heading length="10">Reminder</heading><body length="123">Don't forget me this weekend</body><br type="check"/></note></code>

更多相关文章

  1. 详解在XML文档中替换元素名称的方法(图)
  2. XML开发基础-XML元素
  3. XML开发基础-XML属性的代码详解
  4. 详解使用XML Schema定义元素的基本知识(图文)
  5. xml的属性总结代码详情
  6. 简单介绍XML Schema中的elementFormDefault属性
  7. jscript和vbscript对XML元素属性进行操作的方法
  8. 分享一个jscript与vbscript操作XML元素属性的方法
  9. C#中通过xpath查找xml的指定元素的代码实例

随机推荐

  1. Python 黏包及黏包解决方案
  2. 求救~~最近刚学python,但却无法用pip导入
  3. python中range()函数的用法--转载
  4. 兄弟连学Python__GitHub入门
  5. Python演讲笔记1
  6. 更简单的方法来启用详细日志记录
  7. python 的多线程 调用input后 别的线程也
  8. windows下安装python的三方模块pyExceler
  9. nova中periodic task的实现
  10. python爬网上图片