我可以将XText用于涉及XML文件类型的DSL吗?

时间:2010-03-09 09:05:25

标签: java xml eclipse dsl xtext

我已经定义了一个小型DSL,它主要以不同类型的XML文件的形式与一些属性文件一起编写。这非常有效但我希望创建一个Eclipse编辑器,以便为初学者更轻松地编辑这些文件(我已经有了一个有效的解析器)。

主XML文件可以引用.properties文件中的某些项,反之亦然。主xml文件也可以引用其他XML文件。某些选项应仅基于.properties文件的内容在主xml文件中可用,并且基于可添加到DSL项目的一些osgi插件(语法是动态的,具体取决于上下文)。语言的结构是固定的,但每个属性中可用的选项或属性的选择本身都会根据插件.jar文件中包含的元数据而变化。

问题:

XText是否支持动态语法(验证会根据外部因素而变化)? XText是否支持XML文件/ .properties文件?

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

请阅读Xtext documentation

  

XText是否支持动态语法(验证会根据外部因素而变化)?

Xtext使用语法定义自动验证语法。此外,您可以在Java或Check中编写任意验证。

  

XText是否支持XML文件/ .properties文件?

当然,如果你为它们定义语法。 ;)它们都不太困难。

答案 1 :(得分:2)

我不完全理解你的目标,但如果你有一个XSD,你是否考虑将其变成Ecore模型,然后为此构建一个Xtext语法?或者,如果您从头开始,首先构建您的DSL语法,然后将ecore导出为XSD,并使用我刚刚发布在http://blog2.vorburger.ch/2012/07/xtext-xml.html中的帮助器? HTH。

答案 2 :(得分:1)

如果您不必拥有XML / XSD,那么您所依赖的实际上更多的是具有可读性(比如JSON,但强类型?)“通用”DSL,用于受某种约束的数据结构“元模型”(用XCore表示,这是一个用于EMF Ecore模型的DSL,你可以从XSD导入......),然后可能是我的EMF简单对象表示法ESON(ex-EFactory){{3}你感兴趣吗?