0

我正在处理的 CCDA 生成器的当前实现在找不到某些名称时在<name>标签上打印一条消息(在标题部分,没有<text>可用的地方):

<name>No information</name>

我知道表达未找到信息的正确方法是通过 @nullFlavor 属性:

<name nullFlavor="NI" />

但是现在应用程序中有一个组件可以读取标签上的值并将其显示在 CCDA 文档的人类可读视图中。如果我只使用@nullflavor,则显示此类名称的字段将为空,而不是“无信息”。

为了避免更改此类组件,我正在考虑添加 @nullFlavor 属性,但仍将消息放在那里:

<name nullFlavor="NI">No information</name>

我知道这在语法上是正确的,因为我已经使用参考验证器对其进行了测试并且它通过了。我的问题是:从语义的角度来看,它有效吗?

4

2 回答 2

2

是的,它是有效的。有问题的特定规范 - v3 抽象数据类型,简单地说:

invariant(ST x) where x.nonNull {
   x.headCharacter.notEmpty;
};

所以如果没有nullFlavor,肯定有一些内容。但不适用相反的规则;如果有 nullFlavor 就可以有内容

于 2017-11-21T18:44:38.703 回答
0

虽然不受限制,但我的观点是,这不是一个好的策略。我了解您对此组件有限制,但是,当您构建 CDA 时,请务必记住它是要与所有人共享的东西,我永远不会期望在nullFlavor属性元素中找到内容。

于 2017-11-22T07:52:31.010 回答