应用二叉树解析XML表示的函数计算表达式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 的函数计算表达式
…
"This date must come after the date you have entered in the Date From field"
End
…
在清单 2 中
当我们需要解析函数计算表达式的时候 , 我们都有什么办法呢?比如在上面的代码片段中,直接解析
回页首
建立用以解析函数计算表达式的二叉树数据结构模型
仔细分析一下清单 2 所示的函数计算表达式,我们不难得出其数据结构模型,如图 1 所示 :
图 1. 函数计算表达式的树模型
我们可以通过 XML 解析器(DOM, SAX, StAX etc.)解析 XML 得到基于以树为数据结构的存模型。但是遍历以二叉树为数据结构的存模型要比以树为数据结构的存模型更方便明了(读者更为熟悉)。在图 2 中,我们把以树为数据结构的模型转换为对应的以二叉树为数据结构的模型(结点的孩子结点为该结点的左孩子结点;结点的兄弟结点为该结点的右孩子结点)。
图 2. 函数计算表达式的二叉树(BinTree)模型