选择显示字体大小

网页编程必看:xml文法分析

  在进行xml文法分析之前,首先有必要了解xml语法的基本规则:

  词法特征:1)xml区分大小写,如元素名在打开和关闭标记中应保持大小写一致<mytag>…</mytag>,xml的保留词串应符合大小写要求<?xml …> <!entity>…。

  2)xml保留标记字符为:< > &,保留字符不允许出现在元素名、元素文本、属性名、属性值中,< 用户打开标记,>用于关闭标记,&用于转意,常见的转意为 &lt生成<,&gt生成>,&amp生成&,&apos生成’,&quot生成”

  3)元素名以下划线或字母开始,可包含字母、数字、句点、连字符、下划线、冒号和用于其他语言的扩展字符,元素名中不能有空格符(分格符、跳格符、换行符、回车符),元素名可以由名域前缀。如:<mytag> <dt:mytag> 元素文本可以是除xml保留字符外的字符集合,如<mytag> my money is &#36;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”>
  4)xml指令由<?和保留串打开,由?>关闭,如:<?xml-stylesheet type=”text/xsl” href=”mystyle.xsl”?>
  5)xml注释由<!――打开,由――>关闭,如:<!--   this is my xml document  -->
  6)xml元素由<元素名>打开,由/>,或</元素名>关闭,元素的打开和关闭标记相互匹配,如<myteg ../>或<mytag>…</myteg>,xml的元素允许嵌套,应此还应保持层次上的匹配,如<myteg><subtag>..</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 [~, ! , @, #, &#37;, ^, &,*,(, ), ?, :, ;, “, ‘, ,, ., /,-, _, +, =, , \] /*符号字符*/
  #define ascii2 [0x80,…,0xff] /*ascii chart2 扩展字符*/
  #define space [0x20, \t, \r, \n] /*空格符,跳格符,回车符,换行符*/
  #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)*





 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons