XML语法规则

来源:互联网 发布:公司网络搭建 编辑:程序博客网 时间:2024/06/06 04:51

一、XML文档规则
1.1 XML声明
 定义这是一篇XML文档,必须放在第一行,格式:
  <?xml version="1.0" standalone="no" encode="GBK"?>
1.2 XML文档类型声明
 用于声明DTD,放在XML声明之后、根元素之前,也可以不要。进过DTD验证的XML文档才是有效文档。格式:(portal为根元素)
  <?DOCTYPE portal SYSTEM "http://www.baidu.com//buaidxml/jishi.dtd" ?> (外部声明)
  <?DOCTYPE portal [<!ELEMENT portal(name)>] ?> (内部声明,即直接用中括号括起DTD内容)
  <?DOCTYPE portal   SYSTEM "http://www.baidu.com//buaidxml/jishi.dtd"    [<!ELEMENT portal(name)>]  ?> (混合声明)
1.3 根元素
    一个文档只能有一个。
1.4 命名规则
 XML名称只能下划线和字母开始,区分大小写。与XML名称记号("<>"和"</>之间的内容随便开始)不同。
1.5 符号
 一般元素:以"<>"开始和"</>"结尾,属性值可以用单引号或者双引号。格式:<name sex="man">武术家</name>
 空元素:以"<>"开始和"/>"结尾。格式:<img src="gua.jpg" />
 处理指令:以"<?"开始和"?>"结尾。格式:<? xml-style href='shg.css' type='text/css' ?>
1.6 命名空间
 格式:<protal xmlns:cp="computer"><cp:name xmlns:ff="sicnd">......</cp></protal>
 如果直接<protal xmlns="computer">则表示所有子元素的命名空间都是computer且不加前缀。另外DTD定义时对应元素必须添加前缀cp和ff
 


二、XML文档类型规则(DTD)
XML文档和XML文档类型是两个文件,注意区分。1.2已经讲了它的声明。下面介绍它的内容:
2.1 元素声明
 定义元素包含的内容和顺序,格式:
 <!ELEMENT portal(#PCDATA)>(定义portal只能包含文本)
 <!ELEMENT portal(name,id?,addr*,date+)>(定义portal包含子元素和顺序,"?"表示最多一个,"*"表示任意个,"+"表示至少一个)
 <!ELEMENT portal(#PCDATA|tel)*)>(定义portal既包含文本也包含tel,"|"表示选择)
 <!ELEMENT portal EMPTY>(定义portal为空元素)
 <!ELEMENT portal ANY>(定义portal可以包含任意内容,故有可能打破XML规则,少用)
2.2 属性声明
 定义元素属性的类型,格式:
 <!ATTLIST  img src CDATA #REQUERIED  width CDATA >
 属性类型有:CDATA(文本但不能指定整数和日期)、NMTOKEN(数字和日期)、NMTOKENS(属性值是多个整数空格隔开的字符串)、

ID(元素标识符)、IDREF(属性值为已有的ID类型的属性值)、IDREFS(道理同NMTOKENS)、ENTITY(属性值为一个实体)、ENTITIES(道理

同NMTOKENS)、NOTATION(自定义)
 缺省类型有:#FIXED(值为固定常量,格式<!ATTLIST  img src  width CDATA #FIXED "300px" >)、#REQUERIED(表示属性必须有)、

IMPLIED(属性可选)。还有一种<!ATTLIST  img src  width CDATA  "300px" >,表示没有显示指定,则默认为"300px"。
2.3实体声明
 一般通用实体,实体可以是字符串,可以是文件。定义格式:
  <!ENTITY lin "sdshisd"> (内部实体定义)
  <!ENTITY lin SYSTEM "http://www.bst.com/sdvav.xml"> (外部实体定义,注意此时&lin表示一个XML文档不是路径)
  <!ENTITY lin SYSTEM "http://www.bst.com/sdvav.doc" NDATA doc> (外部实体定义,注意此时&lin表示一个DOC文档不是路径,并要使用NDATA指定NOTATION定义的类型doc)

  <!ENTITY lin SYSTEM "http://www.bst.com/sdvav.dtd"> (外部定义,注意此时&lin表示在dtd中定义,不是这个文件了)
 参数实体定义格式:
  <!ENTITY %  g "djg"> (内部定义,注意空格)
  <!ENTITY %  g SYSTEM "http://www.baidu.com/kjisf.dtd"> (外部声明,注意此处不是一个dtd外部实体,而是表示在外面定义这个"%g;")
2.4 注释
 使用<![IGNORE[...............]]>。

 

 

 

 


 

原创粉丝点击