登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

涤心斋

淡泊以明志,宁静以致远!

 
 
 

日志

 
 

xml学习笔记(二)  

2008-02-24 11:08:14|  分类: 专业 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  上一文给出了xml的OverView。真正让我们关心的xml的技术有三个:

  一、xml的定义,有两种技术DTD、xml Schema

  二、xml转化,xsl,可以将一种xml转化成另一种xml格式

  三、XSLPatterns,用于选取xml文档中的元素

  一、三对于程序员来说是最有用的了。第三种用于解析xml文档。

  今天就来研究一下DTD吧。DTD老实说比较简单。它的语法形式不是一个xml文档。DTD有哪些功能呢,我来简单描述一下,我看了一本参考资料(XML电视讲座培训教程),上面讲DTD很详细。讲了好几章,事实上这个东西没必要记住它的那些语法元素,只要有一个大概映像就行了。

  解决一些实际问题吧。

  什么是DTD?

  DTD是Document Type Definitions(文档类型定义),它的作用是定义一个xml文档的合法格式,这个定义还太抽象了,倒底定义了哪些东西呢?

  一、xml中有哪些元素,元素之间嵌套关系

  二、某元素的属性有哪些,属性出现的顺序,值类型

  三、某元素有哪些子元素,某一子元素的可能个数

  四、某元素的哪些子元素是互斥的

  差不多就这些了。一个xml文档,其实也就差不多这么些东西,其他用法都是比较生僻的,我们不用学孔乙己一样记住茴香豆的几种写法。呵呵。

  怎样在一个xml中定义它的DTD声明呢?

  两种方法,一种就是把DTD的详细内容写到xml中,这种方法麻烦,且不易与其他xml文档共用一个DTD声明。这种方法应当少用。另一种是通过链接的方式链接到一个DTD文件上面。语法如下:

  <!DOCTYPE root_element_name SYSTEM "DTD_URL">

  root_element_name是基本元素的名称

  SYSTEM 是xml的关键字

  DTD_URL是DTD文件绝对或相对URL

  怎样在一个DTD中声明上面四种问题?

  关键所在了。我一本那么厚的书,讲这个讲了好久,真是浪费啊。

  如果是一个单独的DTD文件,其格式为:

  <!DOCTYPE 根元素名[

        …………………………

  ]>

  就这么简单,中间就进行元素、属性的声明。

  怎样定义一个元素?

  <!ELEMENT A(B,C)>        A元素中有B,C两元素

  <!ELEMENT A(B*,C?,D+)>  A元素中可能有0个或多个B元素,一个或0个C元素,一个或多个D元素

  <!ELEMENT A(B|C)>    A元素中可能有B元素或C元素,但是B与C不能同时存在于一个A元素中

  <!ELEMENT A(B,(C|D)+)>  不用解释了

  <!ELEMENT A(B|#PCDATA)*> 可以是B元素与可解析字符的混合内容,这个表达方式蛮重要的

  怎样定义一个元素的属性呢?

  简单的很。。方法如下:

  <!ATTLIST Element_name Attribute_name Type Default_Value>

  Element_name是要定义属性的元素名

  Attribute_name是属性名

  Type是属性值类型

  Default_Value是属性的默认值

  怎样为一个元素定义多个属性?

  两种方法,分多个<!ATTLIST ……>来声明,另一种方法就是把多个属性写到一个<!ATTLIST ……>里面,示例如下:

  <!ATTLIST Forms name CDATA>

       <!ATTLIST Forms title CDATA>

       也可以定义成:<!ATTLIST Forms name CDATA title CDATA>

  如何定义一个属性是否必须?

  有三种方法:

  <!ATTLIST Forms name CDATA #REQUIRED>        name属性是必须的

  <!ATTLIST Forms title CDATA #IMPLIED>     title属性不是必须的

  <!ATTLIST Forms Visible CDATA #FIXED "true">     Visible属性是固定的,用户不能设成其它值

  怎样定义实体?

  事实上,xml中除了定义上面四大类东西外,还要定义实体。实体其实就相当于c++中的宏,是个代号。在DTD中定义的诘法如下:

  <!ENITITY City "广州">

  花了一个上午,把这个DTD的问题搞定了。至于XML Schema就算了。

  评论这张
 
阅读(783)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018