我们可以在应用程序中对上述情况的每一种组合都创建一项与之对应的硬编码菜单项数组,但是你很快就会发现这种方法难以处理。而且,这些菜单项排列组合需要下载到客户端,因此下载量会显著增加。
上述问题的一个显而易见的解决方案就是在应用程序中用类似如下逻辑来动态创建菜单元素:
if user = GUEST then
ADD Login
else
ADD LogOut
ADD Company Info
ADD Company Info -> Accounts
ADD Company Info -> Phone Book
end if
菜单的创建可以是几部分的结果。例如:
最终的菜单一般由上面所提到的一部分或者多部分(一般是所有这些部分)组成。一旦产生了这个文件,它就可以动态包含在最终的输出之中,并发送到用户浏览器来作为用户界面的一部分。常见的DHTML菜单脚本的许多变种都允许以这种方法来定义结构,其数据通常来自数据库。
当XML作为服务器与客户端浏览器进行数据交换的工具而出现之后,我们有了另一种把菜单结构提供给终端用户的方法。这一方法有如下好处: