岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的网页编程必看:XML文法分析,希望大家看完后能赶快学习起来。
【 tulaoshi.com - Web开发 】
在进行XML文法分析之前,首先有必要了解XML语法的基本规则:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)词法特征:1)XML区分大小写,如元素名在打开和关闭标记中应保持大小写一致mytag…/mytag,XML的保留词串应符合大小写要求?xml … !ENTITY…。
2)XML保留标记字符为: &,保留字符不允许出现在元素名、元素文本、属性名、属性值中, 用户打开标记,用于关闭标记,&用于转意,常见的转意为 <生成,>生成,&生成&,&apos生成’,"生成”
3)元素名以下划线或字母开始,可包含字母、数字、句点、连字符、下划线、冒号和用于其他语言的扩展字符,元素名中不能有空格符(分格符、跳格符、换行符、回车符),元素名可以由名域前缀。如:mytag dt:mytag 元素文本可以是除XML保留字符外的字符集合,如mytag my money is $2000 /mytag
4)属性名的规则同元素名,属性值由单引号或双引号括约其中,可由除XML保留字符以外的字符串组成,如:mytag myprop=”proper value”。属性名有xmlns前缀,表明该属性定义了一个名域,如:mytag xmlns:ns=”http://www.myweb.com/myschema”
句法特征:1)XML文档由一个XML说明、多个可选的文档说明、多个可选的XML指令、多个可选的XML注释和一个根元素的数据体组成,此外还可以有嵌入语句中的CDATA段,如:
以下为引用的内容:
?xml  …?  /*XML说明*/
  !DOCTYPE  …  /*XML文档说明*/
  !--  …  --  /*XML注释*/
  ?xml-stylesheet  …?  /*XML指令*/
  root  /*根数据元素*/
  child
  …![CDATA[…]]
  /child
  /root    
2)XML说明由?xml打开,由?标关闭,其中包含版本、编码等可选说明,如:?xml version=”1.0” encoding=”UTF-9”?
3)XML文档说明由!和保留串打开,由关闭,如:!DOCTYPE mydoc SYSTEM “mydoc.dtd”
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)4)XML指令由?和保留串打开,由?关闭,如:?xml-stylesheet type=”text/xsl” href=”mystyle.xsl”?
5)XML注释由!――打开,由――关闭,如:!-- this is my xml document --
6)XML元素由元素名打开,由/,或/元素名关闭,元素的打开和关闭标记相互匹配,如myteg../或mytag…/myteg,XML的元素允许嵌套,应此还应保持层次上的匹配,如mytegsubtag../subtag/mytag。
7)CDTATA段由![CDATA[打开,由]]关闭,用于使居于其中的语句规避XML解析规则。如:![CDATA[ select * from mytable where thefield = ‘100’ ]]
根据以上的XML文法特征,可以构造出用于词法分析的正则式和用于句法分析的下推自动机结构。
XML词法正则式:
  #define  digit  [1,2,…,9]  /*数字字符*/
  #define  letter  [a,b,…,z,A,B,…,Z]  /*字母字符*/
  #define  signs  [~,  !  ,  @,  #,  %,  ^,  &,*,(,  ),  ?,  :,  ;,  “,  ‘,  ,,  .,  /,-,  _,  +,  =,  |,  ]  /*符号字符*/
  #define  ascii2  [0x80,…,0xFF]  /*ASCII  chart2  扩展字符*/
  #define  space  [0x20,  ,  ,  ]  /*空格符,跳格符,回车符,换行符*/
  #define  reserve  [  ,  ,  &]  /*XML保留字符*/
1)元素名的正则式:
element_name - (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*
2)元素文本的正则式:
element_text - (ε| not reserve)*
3)属性名的正则式:
proper_name - (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*
4)属性文本的正则式:
proper_value - (ε| not reserve)*
来源:http://www.tulaoshi.com/n/20160219/1622501.html
看过《网页编程必看:XML文法分析》的人还看了以下文章 更多>>