网页创作系统WHPAT的HTML语法分析转换器实现.pdfVIP

网页创作系统WHPAT的HTML语法分析转换器实现.pdf

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网页创作系统WHPAT的HTML语法分析转换器实现 阮志丹梁妙园冯刚谢鹤宜 华中师范大学多媒体技术研究所430079 摘要:苯文在分析ttTML3.2语法的基础之上结合I卧IPAT创作系统的内存具体组织方式,按照面向对象的 方法设计了一个HTML语法分析转捷嚣,以完成从内存副IITML文本交件的转换和从盯札文件列内存的转换 工作. 荚键词:/IIPAT创作§统ⅡTML语言标记 =叉埘先序遍历 1。引言 Web HomePageAuthoringTool(简称WHPAT)是我所新近设计开发的一个全中文化的 Web网页创作系统。该系统采用可视化界面、所见即所得(WYsl、】n,G)的捧版方式。易学易用, 适合于中小型企事业单位,非计算机专业的广大用户,可以用来进行包含文字、图象、声音等 多种媒体信息的发布和信息查询等服务。 2.超文本标记语言(HTML)语法筒析 HTML语言由标记(tag)组成,HTML标记可分为两类:包容标记和空标记。包容标记由一 个开始标记和一个结束标记构成. First 例如:TITLE-MyHomcpage!/rlTLE.空标记只 有起始标记而没有结束标记。例如:IMG SRC=global.g渺。 3.HTML语法分析转换器的实现 3,1.HTML文件的二叉树转换 在HTML语法规范中,定义了许多基本元素对象。这些元素并不是一种离散的关系,而 是有一定的隶属关系,有的还有嵌套关系。如:段落里可以包含绝大多数HTML基本元素;表 格(Table)里可以嵌套表格;表单(Form)里面可以含有文本、图象等元素等.这些元素的相对位 置关系、隶属关系及任何复杂的关系,都可以用二又树结构清楚地表示出来。使用二叉树有着 其突出的优点,对二叉树的各种操作,如查找、插入、删除等都有比较成熟的算法. 3.2从HTML文本文件转换到内存格式 每次打开HTML文本文件时,把文件内容读出,将其存入~缓冲区。然后,对缓冲区中 的文本字符进行逐个扫描。这里需要设置两个指示器:起点指示器和终点指示器.起点指示器 用于指向正在识别的标记的左尖括号‘’,终点指示器用于指向该标记的右尖括号‘’。 这样,就可对起点指示器和终点指示器之间标记的内容进行处理,具体地说,就是把该标记的 属性等各种信息存放剑相应的数据结构中去。一个标记处理完后,再从该标记的终点指示器后 ~字符重新开始扫描,又得到下一个标记。如此循环往复,直到扫描完毕。一般来说,一个标 记将形成树结构中的一个结点,但有些标记是另一元素的属性,如B、I,u等是文本的属性, 它们就不单独形成结点,而是作为文本结点的属性。此外还有一个重要的问题需要解决,印如 何构成结点之间的关系,形成一种树状结构。因为最终要形成二叉树的结构,所以结点闻的关 系不外乎两种:父子关系和兄弟关系.笔者采用堆栈的方法来解决这个闫J露。 为了表示出结点之间的关系。需要设置前一相关结点指针pNode、当前结点指针cNode 的关系(为1表示是兄弟关系,为0表示是父子关系)。对下一结点来说,iNode划为前一循环 而与当前结点之间问隔着若干个结点。这就需要朋堆栈来保留前一相关结点的ID值信息。具 体米说,如果遇到空标记,只需将lsBrother设置为1,因为空标记和下一标记之间肯定为兄弟 关系。对于包容标记,情况就要复杂一些,堆栈的方法在这里得到运用。如果遇到包容标记的 容标记如果嵌套下一标记.划其与下一标记应为父子关系;如果遇到该包容标记的结束标记. 设置为1,这是因为该包答标记已经结束,其与下一标记之问应为兄弟关系。 其具体算法如下:(用类C语言描述) (1)Begin cNode=0lsBmther-0 (2)初始化系统参数:—Nodc=-I (3)While(文件尚未处理完毕) ㈥ 识别一个标记卜殴连续的纯文字 (5) If(是纯文字) cNode=lD (6) 进行文本对象处理;令ID=ID+IpNode=cNode (7) 建立pNode与cNode的关系;令lsBrother=l f8’ Els

文档评论(0)

bhl0572 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档