5

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

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

我怀疑这是一项艰巨的任务,而不是工具包或库可以完全解决的问题,但我很想知道是否有其他人沿着这条路走下去并成功(或失败)以及他们是否使用了特定的库,有帮助的工具包或方法。我已经开始将 T4 模板视为一种方法,并且觉得这会给我带来很多好处,但如果有更简单的方法,我不想承诺这样做。

4

6 回答 6

4

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

它是相当密集的 JavaScript,但在开发和维护期间节省的时间方面对我们来说是巨大的好处。

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

JavaScript 因其动态性而成为完成此类任务的绝佳语言。

于 2009-11-12T21:49:26.933 回答
2

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

于 2009-11-12T00:17:34.383 回答
1

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

于 2009-11-11T08:57:45.843 回答
1

试试JAXE。它是一个 XML 编辑器,可根据您提供的 XML 模式为您提供在给定元素中插入哪些元素的上下文选择。它不是一个 Web 界面,而是一个 Java 界面,如果您愿意,它可能会嵌入到 Java 小程序中。(对于界面的外观,它也没有给您太大的灵活性,但它确实为您提供了架构外观的很大灵活性。)它看起来确实类似于 Altova 的 StyleVision,另一个答案在这里提出,但 JAXE 是开源的。

于 2009-11-12T21:58:19.627 回答
0

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

并不是说这种方法一定会比 T4 更好;我从来没有尝试过。

于 2009-11-06T01:42:49.587 回答
0

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

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

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

我还研究了从 XML 到分层对象的直接映射,例如具有“Name”、“Value”和“ChildNodes”属性的 Node 类,当包装为 IEnumerable 时可以绑定到第 3 方控件,例如Infragistics XamGrid 和 XamDataTree,两者都是完全可编辑的。再次,非常多的 MS 实现通过所有层。

希望有帮助。

于 2012-05-02T12:40:05.220 回答