XML数据的底层结构之DTD(实践部分)

XML文件代码:
<?xml version="1.0"?>
<!DOCTYPE message[
<!ELEMENT message (header,body,(signature|footer))>
<!ELEMENT header (date,from,to+,subject,banner?)>
<!ELEMENT body  (paragraph*)>
<!ELEMENT date  (date,month,year)>
<!ELEMENT paragraph (#PCDATA)>
<!ATTLIST paragraph size CDATA #REQUIRED>
<!ELEMENT signature (#PCDATA)>
<!ELEMENT footer  ANY>
<!ELEMENT day    (#PCDATA)>
<!ELEMENT month    (#PCDATA)>
<!ATTLIST month type (numberic|character) #REQUIRED>
<!ELEMENT year    (#PCDATA)>
<!ATTLIST year    format (numeric|character) "numeric" >
<!ELEMENT from  (#PCDATA)>
<!ELEMENT to (#PCDATA)>
<!ATTLIST to relationship CDATA #IMPLIED>
<!ELEMENT subject (#PCDATA)>
<!ELEMENT banner   (#PCDATA)>
]>
<message >
 <header>
  <date>
   <day>12</day>
   <month type="character">MAY</month>
   <year>2006</year>
  </date>
  <from> luliuyan </from>
  <to>   luliuyan's wife</to>
  <to relationship="very close">Your family</to>
  <to relationship="not so close">Your friends</to>
  <subject> Merry Christmas</subject>
  <banner></banner>
 </header>
 <body>
  <paragraph size="1 line">
  Best wishes for Christmas 
  </paragraph>
  <paragraph size="2 line">
  I love you!! 
  </paragraph>
 </body>
 <footer>
  <day>Christmas Day</day>
  <from>The best for us</from>
 </footer>
</message> 
 
 
分析:
看XML文件最重要的是要看它的结构:
从上面的示例我们可以知道,第一层次:message包含三个元素:header,body,signature或者footer(其中一个);
第二层次:
header又包含五个子元素:date,from,to("+"表示to元素出现次数为一到多次),subject,banner("?"表示banner元素出现次数为零到多次);
body有子元素paragraph("*"表示paragraph元素可以不出现,或出现一次或多次),而且paragraph有#PCDATA限制,表示不能包含其它元素,且只能是字符数据,另外paragraph含有属性size, 且size属性的类型是CDATA,表示是字符数据,#REQUIRED表示使用paragraph元素时必须使用size属性;
signature元素  也为字符类型;
footer元素类型为任意类型ANY;(本例中是包含其它子元素的类型);
 
第三层次:
date元素又包含day,month(有type属性),year(有format属性)三个子元素;
from元素;
to元素有relationship属性;
 
如果还有什么不知道的可以看昨天的关于DTD的理论部分,其实我今天说了好多废话的,只要把代码贴出来就行了,大家好好学习了,不要偷懒
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值