特性开关
在XDSL的任意节点上都可以通过特性表达式来实现编译期的开关选择
<root>
<child feature:on="my.flag and !my.disabled-flag">
</child>
</root>
feature:on表示表达式为true时节点才存在,否则在加载的后处理操作中会被自动删除feature:off的语义表示表达式为false时节点才存在,语义与feature:on相反- 节点上可以同时具有
feature:on和feature:off设置,两个判断都通过才可以
特性表达式
- 特性表达式支持复杂的and/or语法,简单的比较运算,比如
>=,=等。 - 可以通过!表示取反
- 支持括号
虚拟节点
有时为了方便控制,我们可以加入一个虚拟节点。当特性开关不满足时,虚拟节点下的所有内容都会自动被删除。
<domain>
<options>
<x:div feature:on="my.a1">
<option>1</option>
<option>2</option>
</x:div>
<option>3</option>
</options>
</domain>
当application.yaml中配置my.a1=true时,加载得到的XNode节点为
<domain>
<options>
<option>1</option>
<option>2</option>
<option>3</option>
</options>
</domain>
Meta配置变量
在根节点上配置 feature:enable-meta-cfg为true之后,会识别@meta-cfg:前缀,自动调换配置变量。例如:
<task feature:enable-meta-cfg="true">
<step fetchSize="@meta-cfg:my.fetch-size|10">
</step>
</task>
如果application.yaml中配置了my.fetch-size,则以配置的变量为准,否则fetchSize将被设置为缺省值10.