Production 模板指令
*生产模板指令指定可出现在特定构造中的成员的有效组合。 此指令只能出现在具有 *Type: CONSTRUCT 的模板中。
如果存在此指令,则针对绑定到生产主机模板的构造的每个实例评估生产。 主机模板是包含 Production 指令的模板。 如果 Production 指令的计算结果为 FALSE,则会发出警告消息,但处理不受影响。 如果主机模板不包含任何生产指令,则不执行任何验证。
*生产指令显示在主机模板构造的根级别。 如果根级别出现多个 *Production 指令,则只会评估最近定义的指令。 计算 Production 指令的结果是布尔值。
*Production 指令本身是一个构造。 *Production 指令的子元素是其他 *Production constructs 或 *Member 构造或两者的组合, (也称为子生产) 。 不能在 *Production 指令中使用命名空间指令。
包含在 *Production 指令中的每个子生产也计算结果为 TRUE 或 FALSE。 首先通过评估其每个子生产来评估 Production 指令。 封闭父 Production 指令的结果是通过对每个子生产的结果执行简单的逻辑运算来获取的。 要应用的逻辑操作的类型由 *Production 指令的 vValue 指定。
*Production 指令的值可以是以下符号之一:EXACTLY_ONE、SATISFY_ALL或AT_LEAST_ONE。
以下示例显示了一个生产指令。
*Production: EXACTLY_ONE
{ ... child Productions ... }
以下算法定义生产指令值:
如果生产指定EXACTLY_ONE,则当恰好一个子生产评估结果为 TRUE 时,此生产计算结果为 TRUE,其余值为 FALSE。 否则,生产计算结果为 FALSE。
如果生产指定SATISFY_ALL,则仅当所有子生产评估结果为 TRUE 时,此生产才会计算为 TRUE。 否则,生产计算结果为 FALSE。
如果生产指定AT_LEAST_ONE,则如果至少有一个或多个子生产项的计算结果为 TRUE ,则此生产计算结果为 TRUE。 否则,生产计算结果为 FALSE。
*生产指令可以嵌套到任意深度。