基于xml架构创建页面并从xml记录添加数据

时间:2009-04-13 19:32:58

标签: .net asp.net xml

假设我有一个系统可以存储xml中某些复杂对象的数据。这些对象具有弱的继承关系:可能是所有这些对象共有4个字段,然后是每种类型对象唯一的20个字段,比如6到8种不同类型的对象。

每个对象唯一的数据本身可能很复杂:诸如枚举,其他复杂类型以及仅有条件使用的项目。每种类型的对象都有一个xml架构来描述它。

该系统通过一系列步骤为每个对象建立记录,因此只有部分记录是很常见的。每个步骤的内容都没有定义:用户可以尽可能多地填写,然后将链接传递给更有知识的人完成。

我想要做的是创建一个ASP.Net页面来显示这些记录。给定记录号(和类型)将该类型的模式加载到表单中,然后从记录本身填充表单。我不认为记录本身就足以创建页面,因为记录可能尚未列出我想要包含在表单中的每个字段,并且不会隐含地包​​含类似枚举等类型的数据。

实现这一目标的优雅方法是什么?我确定我错过了一些关于这种简单方法的明显方法,但Xslt可能不会削减它。

这是this question的后续行动,目前纯粹是假设的。根据这里的回答,我可能完全采用不同的方式。

1 个答案:

答案 0 :(得分:1)

当你说“Xslt可能不会削减它”时,我想知道你有哪种Xslt方法。

一种方法是以某种方式转换表单的实例数据。 (我不确定这在实践中会起作用,也许这就是为什么你说Xslt无法工作的原因。)

另一种方法是使用Xslt生成定制的一次性模式,该模式是针对表单数据的当前状态定制的。然后,您将使用此架构来构建表单。例如,转换后的模式将排除尚未准备好显示的字段的定义。这对我来说听起来很可行(不是我是志愿者: - )

更新(回复评论): 说实话,我不知道asp.net是否足以说明它的缓存是否适合您的需求。我原以为你想要缓存,原因我会去。

试图澄清我的意思:我在你的描述中听到的是记录的当前状态可能会影响表单的结构。例如,字段A的合法值可能受字段X,Y和Z的值约束,其中一些字段实际上可能是未知的并且在给定时间是不可知的;这种模糊性可能使得使用单一,统一的结构呈现表单变得困难。

我的想法是,也许您不必将自己局限于不可变的架构。如果数据的当前状态将更好地由修改的模式表示(例如,反映字段A的允许的枚举值,或者字段B当前允许的联合选择),那么我提出可能转换模式在创建表单之前可能会有所帮助。关于缓存的评论,我担心由于数据和模式的变化,缓存可能会导致在需要更新的表单定义时提供陈旧的表单定义。也许您可以通过基于自定义架构的当前状态来置换命名空间URL来避免这种情况。

我希望这会有所帮助。