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>
以上就是xml束缚手艺之dtd的详解的细致内容,更多请关注ki4网别的相干文章!