应用二叉树解析XML表示的函数计算表达式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应用二叉树解析XML 表示的函数计算表达式

XForms 的函数计算表达式简介

XForms 是用于 XML 数据处理的 Web 表单规 , 它允许您将表单的用途和外观

分开。目前 W3C 组织正在审查 XForms 1.1 的候选工作草案(1.0 是正式的

Internet 推荐标准)。IBM® Lotus Forms ( 电子表单领域的杰出产品之一 ) 就是基于 XForms 和 XFDL (Extensible Forms Description Language) 语言的,它把 XForms 强大的数据处理能力和 XFDL 语言丰富的表示能力紧密的结合在一起。

XForms 的数据模型(Data Model)封装了对表单数据的一些逻辑处理操作。如清单 1 所示,xforms:bind 元素拥有一个 calculate 属性。该属性通过函数计算表达式来实现表单数据的处理逻辑。

清单 1. XForms 的函数计算表达式

nodeset="instance('INSTANCE')/P001/VarianceMeals">

nodeset="instance('INSTANCE')/P001/minAccount">

在清单 2 中,我们简单介绍了另一种 XML 表示的函数计算表达式,其应用于一款基于 XML 语法的电子表单产品中。窥豹可见一斑,本文同样适用于其它基于XML 语法的函数计算表达式。

清单 2. XForms 的函数计算表达式

If DateTo < DateFrom Then False With Alert</p><p>"This date must come after the date you have entered in the Date From field"</p><p>End</plainText></p><p></calculation></p><p><calculation></p><p><func name="Min"></p><p><func name="Abs"></p><p><cell name="Summary" /></p><p></func></p><p><func name="Subtract"></p><p><cell name="Demo1"></p><p><cell name="Demo2"></p><p></func></p><p><number value="100" /></p><p></func></p><p><plainText>Min(Abs(Summary),Demo1-Demo2, 100)</plainText></p><p></calculation></p><p>…</p><p>在清单 2 中 <func> 标签用以标识函数或操作符。其 name 的属性值既是函数或操作符的名称。<cell> 标签,读者可以理解为用以标识函数计算表达式中的变量;而 <number>,<string> 等标签则是标识函数计算表达式中的常量容。</p><p>当我们需要解析函数计算表达式的时候 , 我们都有什么办法呢?比如在上面的代码片段中,直接解析 <plainText> 元素的容似乎是一个办法。直接解析</p><p><plainText>Min(Abs(Summary), Demo1-Demo2, 100)</plainText> 就已经得到了正确的结果。然而,解析含有大量嵌套的条件判断语句的函数计算表达式,如解析第一个 <plainText> 元素中的容就变得非常困难了。当我们要想进一步分析并处理 <plainText> 元素中的函数计算表达式的时候,表达式已经丢失了很多重要的原始信息(比如说类型信息),这样处理起来就难上加难了。有什么更好的办法么?我们可以尝试解析除了 <plainText> 元素以外的以</p><p><calculation> 元素为根的 XML 代码片段中的信息。</p><p>回页首</p><p>建立用以解析函数计算表达式的二叉树数据结构模型</p><p>仔细分析一下清单 2 所示的函数计算表达式,我们不难得出其数据结构模型,如图 1 所示 :</p><p>图 1. 函数计算表达式的树模型</p><p>我们可以通过 XML 解析器(DOM, SAX, StAX etc.)解析 XML 得到基于以树为数据结构的存模型。但是遍历以二叉树为数据结构的存模型要比以树为数据结构的存模型更方便明了(读者更为熟悉)。在图 2 中,我们把以树为数据结构的模型转换为对应的以二叉树为数据结构的模型(结点的孩子结点为该结点的左孩子结点;结点的兄弟结点为该结点的右孩子结点)。</p><p>图 2. 函数计算表达式的二叉树(BinTree)模型</p> </div> </div> </div> </div> </div> <div id="rightcol" class="viewcol"> <div class="coltitle">相关文档</div> <ul class="lista"> <li><a href="/doc/089185739.html" target="_blank">波兰算法求二叉树表达式的值</a></li> <li><a href="/doc/1310556397.html" target="_blank">算术表达式与二叉树</a></li> <li><a href="/doc/1f12985677.html" target="_blank">数据结构实验二叉树</a></li> <li><a href="/doc/1016818517.html" target="_blank">表达式用二叉树表示(1)</a></li> <li><a href="/doc/2e13247771.html" target="_blank">C语言二叉树运算</a></li> <li><a href="/doc/2d14373813.html" target="_blank">算术表达式与二叉树课程设计</a></li> <li><a href="/doc/2c17122383.html" target="_blank">基于二叉树结构的表达式求值算法</a></li> <li><a href="/doc/3d3094389.html" target="_blank">c语言实现一.二叉树操作 二.用栈实现算术表达式求值 课设报告</a></li> <li><a href="/doc/367755054.html" target="_blank">实验二叉树及其应用(严选材料)</a></li> <li><a href="/doc/3011750017.html" target="_blank">树和二叉树习题)</a></li> </ul> <div class="coltitle">最新文档</div> <ul class="lista"> <li><a href="/doc/0214712971.html" target="_blank">物料盘点表</a></li> <li><a href="/doc/0314712972.html" target="_blank">2018年中考英语试题分项版解析汇编第01期专题09阅读理解日常生活类新闻报道及广告布告类含解析20</a></li> <li><a href="/doc/0314712973.html" target="_blank">六年级导学案</a></li> <li><a href="/doc/0614712976.html" target="_blank">六年级读后感作文:读《比糖果甜蜜》有感——好朋友,坏朋友_600字</a></li> <li><a href="/doc/0614712977.html" target="_blank">定量分析方法性能确认汇总.</a></li> <li><a href="/doc/0614712978.html" target="_blank">2006年1月——2011年1月合同法</a></li> <li><a href="/doc/0914712982.html" target="_blank">人教版七年级历史下册第7课辉煌的隋唐文化(一)ppt课件</a></li> <li><a href="/doc/0a14712985.html" target="_blank">花开的幸福_高一作文</a></li> <li><a href="/doc/0b14712986.html" target="_blank">文化宣传标语</a></li> <li><a href="/doc/0b14712987.html" target="_blank">g供应商质量工程师培训-通用汽车全球apqp产品质量先期策划</a></li> </ul> </div> </div> <script> var did = "713246964"; var ext = 'doc'; var docId = '1ed7ct54sklicouptnzctyk1a017topf'; var totalPage = 12; const pageNum = '12'; </script> <div class="clearfloat"></div> <div id="footer"> <div class="ft_info"> <a href="https://beian.miit.gov.cn">闽ICP备16038512号-3</a>&nbsp;<a href="/tousu.html" target="_blank">侵权投诉</a> &nbsp;&copy;2013-2023 360文档中心,www.360docs.net | <a target="_blank" href="/sitemap.html">站点地图</a><br> 本站资源均为网友上传分享,本站仅负责收集和整理,有任何问题请在对应网页下方投诉通道反馈 </div> <script>foot()</script> </div> </body> </html>