从Xsd构建UI的工具包或应用程序

时间:2009-11-06 01:10:06

标签: user-interface xsd

我需要构建一个用户界面来编辑和创建符合给定xsd架构的xml文档。我想做的是尽可能根据xsd架构生成我的用户界面。 xsd架构可以(并且将会)随时间发生变化,因此解决方案需要具有一定的灵活性。

用户界面需要是一个Web UI,理想情况下,它是一个用ASP.NET MVC构建的。

我怀疑这是一个很高的订单,而不是一个可以通过工具包或库完全解决的订单,但我很想知道是否有其他人沿着这条路走下去并成功(或失败)以及他们是否使用过特殊的图书馆,工具包或有帮助的方法。我已经开始将T4模板视为一种方法,并且觉得这会让我有很多方法,但如果有更简单的方法,我们不想承诺这一点。

6 个答案:

答案 0 :(得分:4)

我已经构建了一个与你所描述的非常类似的引擎,但是不是使用XSD,而是在JSON Schema中定义了模式,并使用Ext JS框架在浏览器中呈现了界面。

这是非常激烈的JavaScript,但在开发和维护过程中节省的时间对我们来说是巨大的好处。

我不知道是否有一个工具可以完全满足您的需求,但最简单的方法是找到灵活,可靠的GUI框架(例如Ext JS,YUI,Dojo等)并映射每种类型您的XSD到GUI框架中的“窗口小部件类型”。您必须基本保留每种类型的“预配置”,并在解析XSD时应用它们。从概念上讲,它实际上非常简单。

由于其动态性,JavaScript被证明是这项任务的理想语言。

答案 1 :(得分:2)

你的意思是this吗?这是我在我的一个项目中使用的方法,通过xsd将xml转换为xhtml。我的项目非常灵活。

答案 2 :(得分:1)

你可能想看看StyleVision,我过去曾与之合作过这个目的。我知道它们的截图看起来很嘈杂,但我认为他们只是想让它看起来令人印象深刻。在我看来,值得一试。

答案 3 :(得分:1)

试试JAXE。它是一个XML编辑器,它根据您提供的XML模式向您提供要在给定元素中插入的元素的上下文选择。它不是一个Web界面,而是一个Java界面,如果您愿意,它可能嵌入在Java applet中。 (它也没有给你很多关于界面外观的灵活性,但它确实为你提供了很多关于模式的灵活性。)它看起来与Altova的StyleVision相似,这是另一个答案,但JAXE是开源的。

答案 4 :(得分:0)

将XSD架构转换为XAML可能会很有趣,它可以在网页上实例化为silverlight表单。

这种方法不一定比T4好;我从未尝试过。

答案 5 :(得分:0)

我一直在使用XSD进行概念验证,Microsoft XmlSampleGenerator项目从Xsd生成样本xml,然后用于构建GUI和Schematron(用于定义规则)和Xsd内的验证)。有几点需要注意:

  • 该实现非常特定于Microsoft:来自Xml的Silverlight前端UI生成,针对由Schematron(NMatrix Schematron.NET开源实现)扩展的Xsd进行验证,以包含业务规则。
  • 您可以直接从Xsd生成GUI而不使用XmlSampleGenerator步骤,我将其包含在POC中,因为它简化了xml解析并在生成UI时消除了噪音。

我在Xsd中的Xml元素属性中定义字段类型,当通过WCF发送到Silverlight时,可以使用它在编辑模式下通过DataTemplate查找给定类型来定位合适的编辑器,例如,如果类型是System.DateTime等,则显示DatePicker。如果类型更复杂,那么您可以定义自己的类型,这些类型映射到用于复杂UI编辑方案的UI小部件。我还将格式掩码作为xml上的属性,用于各种类型的显示格式化。

我还研究了从XML到分层对象的直接映射,例如:具有'Name','Value'和'ChildNodes'属性的Node类,当包装为IEnumerable时,可以绑定到第三方控件,例如Infragistics XamGrid and XamDataTree,这两个控件都是完全可编辑的。同样,非常多的MS实现贯穿所有层。

希望有所帮助。