X-Meta引擎是使用Java编写的,模型可以和Java源码放在一起,打包时也可以和class文件打包在Jar中。
除了模型文件可以打包在Jar中,还可以指定模型的位置和存储方式,如存储到指定的文件夹下,存储到数据库或像Redis这样的内存数据库中等。
每一个模型都有一个唯一的路径,通过这个路径,可以获取到该模型。
每一个模型都有一个标识,模型的名为_xmeta_id_的值是模型的标识的值,如果没有_xmeta_id_属性则会自动分配一个标识,通常是它的名为name的属性的值,如有重复则会累加一个数字。
模型文件的路径和Java类的路径类似,如在src/org/xmeta/HelloWorld.dml的路径是org.xmeta.HelloWorld,在这里src是源文件目录。
模型的子节点的路径是由@<标识>组成的,如org.xmeta.HelloWorld/@a/@b/@c,表示HelloWorld模型的标识为a的子节点下的标识为b的子节点下的标识是c的节点。
模型可以用多种格式来编码,如XML、JSON和Properties格式等,目前主要使用的是XML和Properties两种格式,其中XML是为了便于手工编写和阅读的,而Properties是由编辑器自动生成和管理的。
目前XML和Properties两种编码的文件后缀名都可以使用dml或dmw。其中dmw后缀名是为了在Windows下直接执行不显示控制台窗口而使用的。
XML编码是为了手工编写和阅读的,它不支持动态模型的所有功能,比如一个模型的描述者不能是它的子节点等。
模型的节点标识默认使用的是XML节点的name属性的值,没有则取标签的名字,如果节点的标识和name属性的值以及标签的名字都不同,那么使用_xmeta_id_属性来说明。
<Shell _xmeta_id_="myid"/>
如果模型的一个属性是字符串,且有多行,那么可以使用CDATA节点来表示。
<?xml version="1.0" encoding="utf-8"?> <Text name="Text" descriptors="xworker.swt.Widgets/@Text"> <text><![CDATA[Hello World Hello World]]></text> </Text>
在上面代码中<text><![CDATA[....]]></text>表示属性名是text,值是CDATA中的内容,其中text属性会合并到<Text name="Text" .../>节点的属性中。
除了基本的XML节点、属性和CDATA外,其它XML的功能就不支持了,通常X-Meta引擎会忽略其它XML的设定,如Schema等。
如果描述者在定义属性的时候定义了默认值,且当前模型的对应属性的值和默认值一样,那么在XML编码编码里则可以不用编写这个属性。
Copyright © 2007-2017 XWorker.org 版权所有