我需要构建一个用户界面来编辑和创建符合给定xsd架构的xml文档。我想做的是尽可能根据xsd架构生成我的用户界面。 xsd架构可以(并且将会)随时间发生变化,因此解决方案需要具有一定的灵活性。
用户界面需要是一个Web UI,理想情况下,它是一个用ASP.NET MVC构建的。
我怀疑这是一个很高的订单,而不是一个可以通过工具包或库完全解决的订单,但我很想知道是否有其他人沿着这条路走下去并成功(或失败)以及他们是否使用过特殊的图书馆,工具包或有帮助的方法。我已经开始将T4模板视为一种方法,并且觉得这会让我有很多方法,但如果有更简单的方法,我们不想承诺这一点。
答案 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内的验证)。有几点需要注意:
我在Xsd中的Xml元素属性中定义字段类型,当通过WCF发送到Silverlight时,可以使用它在编辑模式下通过DataTemplate查找给定类型来定位合适的编辑器,例如,如果类型是System.DateTime等,则显示DatePicker。如果类型更复杂,那么您可以定义自己的类型,这些类型映射到用于复杂UI编辑方案的UI小部件。我还将格式掩码作为xml上的属性,用于各种类型的显示格式化。
我还研究了从XML到分层对象的直接映射,例如:具有'Name','Value'和'ChildNodes'属性的Node类,当包装为IEnumerable时,可以绑定到第三方控件,例如Infragistics XamGrid and XamDataTree,这两个控件都是完全可编辑的。同样,非常多的MS实现贯穿所有层。
希望有所帮助。